老师,IIFE第二个作用还是不理解

老师,IIFE第二个作用还是不理解

使用IIFE前,我理解的是,只是执行了push这个函数,里面的匿名函数并没有执行,数组中全是alert(i);这个源代码,所以才会alert(i),i为全局变量,最终i=5; 所以弹出的都是5


使用IIFE之后,执行的是第一个匿名函数,里面同样push了一个function,也就是把alert(i)放入数组中,push()函数中的匿名函数仍然没有执行,arr中仍然保存了五个函数?全部push完之后,i是全局变量,最终值仍然是5,最后获取的也是全局变量,那么也应该都是5?


是我哪里理解的不对吗


http://img1.sycdn.imooc.com//climg/6032390109d219d904550487.jpg

正在回答

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

1回答

同学你好,使用了IIFE之后,for循环每执行一次,里面的函数也会执行一次,即将数push到数组中一次,因此for循环结束后,数组中会存有5个函数。

http://img1.sycdn.imooc.com//climg/60323e95091c4d6404940439.jpg

祝学习愉快!

  • 程序媛小灯 提问者 #1

    老师,我的意思是,立即执行了function(i)这个函数,但是push的还是一段源代码,这个代码是一个函数,这个函数只是被单纯push进去了,并没有执行。我不理解的点在这里

    2021-02-22 16:56:54
  • 卡布琦诺 回复 提问者 程序媛小灯 #2

    同学你好,push进数组的函数是一个普通的函数,普通函数需要进行调用才能执行,不会像外层的IIFE函数一样,可以立即执行。祝学习愉快!

    2021-02-22 17:47:06
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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