老师,为什么每次循环都会新增一个块级作用域?
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个变量。麻烦解答,谢谢
10
收起
正在回答
1回答
同学你好,解答如下:
这里使用了let声明了变量,即使用了es6语法。在es6中,for循环的大括号就是一个块级作用域:
循环几次就执行几次块中的代码(相当于创建了几个块),所以会生成几个作用域,而当时的i,会与对应的块级作用域绑定。这属于let和for循环的特点,固定的,记住就行了。
祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧