IIFE和对象属性中的匿名函数调用问题

开局一张图,剩下全靠猜!

偶遇这个题目,其输出是什么?请先思考一下。。。。。。。

好吧

。。

答案就是。。。

两个this都是foo

为什么呢?

。。。。。

通过这个题,引起了对立即执行函数的深入思考。。。。

看下面这三个调用。。。

第一个是普通的函数调用

第二个是放在括号中的调用

第三个是啥子嘛。。

接下来详解:

关于bar2的定义,实际上它是不存在的,如果console一下,输出的是undefined。为毛泥?因为它后面放的是自执行函数。

根据官方定义:

 

 

 也就是说虽然是在对象的属性后定义的函数,也是会立即执行,不需要再额外调用了,而且其是在下面其他调用之前被调用。明白了不,也就是当这个js被加载后便会立即调用。因为立即执行函数被放在了全局对象上,自然是背靠大树好乘凉啦,先执行老大下面的,再执行其他小弟的。

而关于(foo.bar)();,这个只是简单是自调用罢了,不是真正的立即执行函数,只是为了自执行而已。

关于这方面,后续继续更。。

posted @ 2019-08-26 15:48  大野酱  阅读(195)  评论(0编辑  收藏  举报