为了账号安全,请及时绑定邮箱和手机立即绑定

这里不用立即调用也可以,那立即调用有什么作用呢?

http://img1.sycdn.imooc.com//55edbbb60001d7fd09330492.jpg这里不用立即调用也可以,那立即调用有什么作用呢

正在回答

4 回答

不用立即调用是不行的,i的值将永远是3,效果也就不对了。
其实任何函数都可以理解为闭包:这些是有关ECMAScript的知识,大家感兴趣,可以移步:
http://weizhifeng.net/javascript-the-core.html 

1 回复 有任何疑惑可以回复我~
#1

小鱼机 提问者

非常感谢!
2015-09-16 回复 有任何疑惑可以回复我~

imgs[i].index = i;这句什么用?

0 回复 有任何疑惑可以回复我~
#1

小鱼机 提问者

存I这个变量,不用这个 就要用老师讲的立即调用了
2015-09-21 回复 有任何疑惑可以回复我~

老师的写法应该属于闭包吧,每次执行都会保存当时的变量,如果不写成(function(i){})(i)这种形式,也不将i重新赋值给imgs[i]的话,这个i的值将永远是3,也就是永远只是最后一站图片展开了。我觉得这两种写法都可以。

0 回复 有任何疑惑可以回复我~
#1

爱丽丝走丢了

如果不写成立即调用的函数表达式,i值应该永远是4.不用立即调用,img[i].onmouseover=function(){....}会等到执行到它时,一行一行执行,而它外层的for循环早已循环完毕,循环完i值为4. 可以测试下 for(var i=0;i<imgs.length;i++){ imgs[i].onmouseover=function(){ alert(i); setImgsPos(); for(var j=1;j<i;j++){......} 在上述代码第三行加上alert(i),弹出i值为4.
2015-09-23 回复 有任何疑惑可以回复我~

可以少些几行代码

0 回复 有任何疑惑可以回复我~
#1

小鱼机 提问者

代码一样
2015-09-08 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

这里不用立即调用也可以,那立即调用有什么作用呢?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信