老师,为什么每次循环都会新增一个块级作用域?

老师,为什么每次循环都会新增一个块级作用域?

1
<!DOCTYPE html><br><html><br><head><br>   <meta charset="utf-8"><br>    <title>块级作用域</title><br></head><br><body><br>   <button class="btn">0</button><br>  <button class="btn">1</button><br>  <button class="btn">2</button><br>  <script type="text/javascript"><br>       let btns=document.querySelectorAll('.btn');<br>     for (let i = 0; i < btns.length; i++) {<br>          btns[i].addEventListener(<br>               'click',<br>                function () {<br>                   console.log(i);<br>             },<br>              false<br>               );<br>      }<br>   </script><br></body><br></html><br>

有点迷惑是为什么‘i’每次循环都会新增一个块级作用域?‘i’只是自增,每次循坏都新增一个块级作用域感觉好像是变成了3个变量。麻烦解答,谢谢

正在回答

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

1回答

同学你好,解答如下:

这里使用了let声明了变量,即使用了es6语法。在es6中,for循环的大括号就是一个块级作用域:

http://img1.sycdn.imooc.com//climg/60fe1a060944469807510271.jpg

循环几次就执行几次块中的代码(相当于创建了几个块),所以会生成几个作用域,而当时的i,会与对应的块级作用域绑定。这属于let和for循环的特点,固定的,记住就行了。

祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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