ES6 - let
通过let定义的变量,作用域是在定义它的块级代码以及其中包括的子块中,并且无法在全局作用域添加变量,通过let定义的变量,在同一个作用域内,不可以重复声明。
//1.在自身所在代码块中有效
{
let a = 1;
var b = 2;
}
console.log(b); // 2
console.log(a); // a is not defined
for(let b=0;b<10;b++) {
arr[b] = function () {
console.log(b);
}
}
console.log(b[4]); // 4
实例:
const btns = document.getElementsByTagName('button')
for (let i = 0; i < btns.length; i++) {
btns[i].addEventListener('click', function () {
console.log('第' + i + '个按钮被点击');
})
}
上面代码中,变量i是let声明的,当前的i只在本轮循环有效,所以每一次循环的i其实都是一个新的变量,你可能会问,如果每一轮循环的变量i都是重新声明的,那它怎么知道上一轮循环的值,从而计算出本轮循环的值?这是因为 JavaScript 引擎内部会记住上一轮循环的值,初始化本轮的变量i时,就在上一轮循环的基础上进行计算。
(function (num) { // 0
btns[i].addEventListener('click', function () {
console.log('第' + num + '个按钮被点击');
})
})(i)
用let 声明,则会打印相应的索引。
posted on 2021-07-20 13:26 TrustNature 阅读(32) 评论(0) 收藏 举报
浙公网安备 33010602011771号