for循环

for循环

        for(var i=0;i<btns.length;i++){
            btns[i].addEventListerer('click',function(){
                console.log(i);
            },false)
        }

我知道这个for循环结束之后的值是3,为啥全局作用域中i的值是3?

全局作用域中i的值为啥不是0,1,2,3

正在回答 回答被采纳积分+1

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

1回答
imooc_慕慕 2023-02-06 16:44:21

同学你好,分析如下:

我们先抛开课程中的案例,单纯的写一个for循环看一下for循环里面和外面打印的结果:

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

在学习第一阶段for循环的课程中我们有讲解过for循环的执行步骤,参考如下:

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

在for循环的条件中如果i<3的时候就不再打印了,因此for循环内只打印0,1,2又因为执行语句还要在执行第四步骤那就是i++,因此在全局中的i打印的是3。

同学可以复习回顾一下for循环相关的课程

祝学习愉快~

  • 提问者 慕芸芸 #1

    这个for循环结束的结果是3,0,1,2这三个数也是在全局作用域中啊

    2023-02-06 16:48:18
  • imooc_慕慕 回复 提问者 慕芸芸 #2

    同学你好,抱歉理解错了同学的意思,这里再重新回答一下:因为在for循环外结束后的值是3,通过上述的for循环执行机制;此时得到了全局变量i=3,又由于for循环中嵌套了函数,当点击按钮的时候就会执行该函数形成作用域,又因为函数作用域中没有i变量就会向外层寻找外层作用域中只有一个全局的变量3,

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

    因此每当点击按钮的时候就会执行相应的函数形成作用域又会沿着作用域链向全局寻找i因此最后都是3。

    祝学习愉快~

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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