2 zdl 01 zdl_01 于 2017.09.18 16:36 提问

前端——一个关于函数引用的小问题

[img=http://img.bbs.csdn.net/upload/201709/18/1505723059_869477.png][/img]
看《javascript设计模式》时看到了这个例子,有点不明白为什么 var baz = foo();是对bar函数的引用而不是对foo函数的引用?

4个回答

caozhy
caozhy   Ds   Rxr 2017.09.18 17:08

baz是foo()的返回值,而foo()返回了bar
如果baz = foo 才是foo

caozhy
caozhy 回复zdl_01: 不带括号是bar,带括号是bar的返回值
2 个月之前 回复
zdl_01
zdl_01 baz = bar 意思是变量baz引用了bar函数吗?
2 个月之前 回复
zdl_01
zdl_01   2017.09.18 17:22

图片没有上传好...再传一次图片说明

lunhui1994_
lunhui1994_   2017.09.18 17:52

小括号是运行的意思,=foo()就是=foo() 函数运行之后的结果。其他地方你也可以这么理解()是运行的意思。

q213546879
q213546879   2017.09.18 18:48

在这个例子里,其实主要讲的就是函数的返回值问题,foo这个函数里面,返回值就是bar函数,所以也就代表了foo()就等于bar。注意哦 不是等于bar()哦! 这两个是有区别的

然后var baz = foo();
其实也就相当于
var baz = bar;
但是为什么不直接这样写呢? 因为这里涉及到变量的作用域问题,在外面访问函数里面的变量是访问不到的,如果直接写var baz = bar; 那么baz会等于underfind;
这也很好理解 就想在foo函数外面访问变量a一样;这样是否有清晰一些?

Csdn user default icon
上传中...
上传图片
插入图片