老师,return返回的是一个具体的值吗?

老师,return返回的是一个具体的值吗?

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>什么是函数</title>
</head>

<body>
    <script>
        function a() {
            function fn() {
                
            }
            return fn
        }
    </script>
</body>

</html>

问题描述:

如果return后面是一个函数或者数组的变量名

每次调用a时返回的是一个具体的值而不是这个变量名的引用吗?

http://img1.sycdn.imooc.com//climg/60b840b60989385502740181.jpg

为啥两次调用的返回值不一样呢?

多次调用,他们的返回值只是长的像

但是实际开辟了一条新的内存地址吗?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
卡布琦诺 2021-06-03 11:32:06

同学你好,指的是下图中的返回结果不一样么?

http://img1.sycdn.imooc.com//climg/60b84c3b09f4963812100707.jpg

接下来,老师帮你分析结果不一样的原因,首先,需要先了解函数名其实就是指向函数体的指针,那么:

(1)不加括号, 可以认为是查看该函数的完整信息, 不加括号传参,相当于传入函数整体 

(2)加括号表示立即调用(执行)这个函数里面的代码(花括号部分的代码)

所以,在控制台中执行a,返回的是整个函数体,而执行a(),返回的是a()这个函数体内的代码。


希望可以帮到你,如果未能解答你的疑惑,请同学再次详细描述一下问题。祝学习愉快!


  • 提问者 __Promise #1

    http://img1.sycdn.imooc.com//climg/60b84e1109d9fdc502720094.jpg

    不是的老师,我的意思是想问为什么两次调用得到的返回值不是一样的

    因为return后面跟的是一个函数名,两次返回的不应该是一样的指针吗?

    2021-06-03 11:41:05
  • 卡布琦诺 回复 提问者 __Promise #2

    同学你好,关于这个问题,老师已经在https://class.imooc.com/course/qadetail/291489问题下进行了解答哦~

    2021-06-03 16:36:54
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师