开局一张图,剩下全靠猜!
偶遇这个题目,其输出是什么?请先思考一下。。。。。。。
好吧
。。
答案就是。。。
两个this都是foo
为什么呢?
。。。。。
通过这个题,引起了对立即执行函数的深入思考。。。。
看下面这三个调用。。。
第一个是普通的函数调用
第二个是放在括号中的调用
第三个是啥子嘛。。
接下来详解:
关于bar2的定义,实际上它是不存在的,如果console一下,输出的是undefined。为毛泥?因为它后面放的是自执行函数。
根据官方定义:
也就是说虽然是在对象的属性后定义的函数,也是会立即执行,不需要再额外调用了,而且其是在下面其他调用之前被调用。明白了不,也就是当这个js被加载后便会立即调用。因为立即执行函数被放在了全局对象上,自然是背靠大树好乘凉啦,先执行老大下面的,再执行其他小弟的。
而关于(foo.bar)();,这个只是简单是自调用罢了,不是真正的立即执行函数,只是为了自执行而已。
关于这方面,后续继续更。。