关于本节课程序执行的疑问。

关于本节课程序执行的疑问。

for(var i=0;i<btn.length;i++){

    ​btn[i].addEventLister('click',function(){

    ​    ​function(){

    ​        ​console.log(i);​

    ​    ​}

    ​},false);

}

老师,能讲一下这段代码的执行顺序吗?

正在回答

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

1回答

同学你好,执行顺序如下:

1、页面打开时,会执行for循环,for循环执行步骤如下:

第一次循环, i=0 , 符合循环条件i < btn.length , 所以执行循环中的代码,为第一个按钮btn[0]绑定了点击事件。注意事件是不会自动执行的,需要触发才会执行。

第二次循环, i=1 , 符合循环条件i < btn.length , 所以执行循环中的代码,为第二个按钮btn[1]绑定了点击事件。

第三次循环, i=2 , 符合循环条件i < btn.length , 所以执行循环中的代码,为第个按钮btn[2]绑定了点击事件。

第四次循环,i=3, 不符合循环条件,跳出循环。

以上是页面打开自动执行的,执行的非常快。

2、当点击按钮时,触发事件,输出i的值。注意在第一条中,i已经为3了,所以不管点击哪一个按钮,i都是3。

​祝学习愉快!

  • 执行循环时i=0,1,2时,难道事件处理函数里面的代码体不是变成console.log(0),  console.log(1),  console.log(2)吗

    2022-12-28 20:14:35
  • 同学你好,可以再仔细看下老师们的回答,是有解释的for循环阶段,事件处理函数不会执行,只有触发事件的时候才会执行。

    https://img1.sycdn.imooc.com//climg/63acf1d609e590a916380744.jpg

    祝学习愉快~

    2022-12-29 09:49:10
  • 好的谢谢老师,老师课上讲的闭包,如果把事件处理函数里面console.log(index)改成console.log(1),这时候还会形成闭包吗?

    2022-12-29 11:21:07
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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