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

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

<!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个变量。麻烦解答,谢谢

正在回答

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

1回答

同学你好,解答如下:

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

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

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

祝学习愉快!

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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