[img=http://img.bbs.csdn.net/upload/201709/18/1505723059_869477.png][/img]
看《javascript设计模式》时看到了这个例子,有点不明白为什么 var baz = foo();是对bar函数的引用而不是对foo函数的引用?
baz是foo()的返回值,而foo()返回了bar
如果baz = foo 才是foo
图片没有上传好...再传一次
小括号是运行的意思,=foo()就是=foo() 函数运行之后的结果。其他地方你也可以这么理解()是运行的意思。
在这个例子里,其实主要讲的就是函数的返回值问题,foo这个函数里面,返回值就是bar函数,所以也就代表了foo()就等于bar。注意哦 不是等于bar()哦! 这两个是有区别的
然后var baz = foo();
其实也就相当于
var baz = bar;
但是为什么不直接这样写呢? 因为这里涉及到变量的作用域问题,在外面访问函数里面的变量是访问不到的,如果直接写var baz = bar; 那么baz会等于underfind;
这也很好理解 就想在foo函数外面访问变量a一样;这样是否有清晰一些?