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

来源:1-3 实例JS+DOM

小鱼机

2015-09-07 22:57

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

写回答 关注

4回答

  • felix
    2015-09-08 11:30:50
    已采纳

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

    小鱼机

    非常感谢!

    2015-09-16 16:03:53

    共 1 条回复 >

  • sun_haha
    2015-09-18 22:56:44

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

    小鱼机

    存I这个变量,不用这个 就要用老师讲的立即调用了

    2015-09-21 11:21:21

    共 1 条回复 >

  • 老徐不二
    2015-09-08 10:50:26

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

    爱丽丝走丢了

    如果不写成立即调用的函数表达式,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 20:24:42

    共 1 条回复 >

  • Giraffe__
    2015-09-07 23:15:01

    可以少些几行代码

    小鱼机

    代码一样

    2015-09-08 00:31:30

    共 1 条回复 >

DOM探索之基础详解篇

要知道前端大牛都是从精通DOM开始的,全面讲解DOM的基础知识

98374 学习 · 238 问题

查看课程

相似问题