let 命令只在所在的代码块内有效, var 命令全局有效
for 循环计数器,很适合使用let命令
for (let i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};
}
a[6](); //输出 6
for (var i = 0; i < 10; i++) {
a[i] = function () {
console.log(i);
};
}
a[6](); //输出 10 ,因为i为var类型是全局变量
另外for循环有一个特别之处, 循环变量为父作用域,循环体内部是一个单独的子作用域。
for (let i = 0; i < 3; i++) {
let i = 'abc';
console.log(i); //输出三遍 abc
}
let 所声明的变量,只能在声明后使用。
// let 的情况
console.log(bar); // 报错ReferenceError
let bar = 2;