老师,为什么每次循环都会新增一个块级作用域?
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>块级作用域</title>
</head>
<body>
<button class="btn">0</button>
<button class="btn">1</button>
<button class="btn">2</button>
<script type="text/javascript">
let btns=document.querySelectorAll('.btn');
for (let i = 0; i < btns.length; i++) {
btns[i].addEventListener(
'click',
function () {
console.log(i);
},
false
);
}
</script>
</body>
</html>
有点迷惑是为什么‘i’每次循环都会新增一个块级作用域?‘i’只是自增,每次循坏都新增一个块级作用域感觉好像是变成了3个变量。麻烦解答,谢谢
10
收起
正在回答
1回答
同学你好,解答如下:
这里使用了let声明了变量,即使用了es6语法。在es6中,for循环的大括号就是一个块级作用域:
循环几次就执行几次块中的代码(相当于创建了几个块),所以会生成几个作用域,而当时的i,会与对应的块级作用域绑定。这属于let和for循环的特点,固定的,记住就行了。
祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星