参考文章:阮一峰 ECMAScript 6 入门
ES6中新增加了 let 声明,它跟 var 的区别如下:
1、作用域不同,let 只在代码块中有效
{
var a = '123';
let b = '456';
} a; //'123'
b; //ReferenceError: b is not defined.
2、建议在 for 循环中使用 let 申明变量
for (let i = 0; i < 10; i++) {
// ...
} console.log(i);
// ReferenceError: i is not defined
如果你用的是 var,那么上面的结果就是10 了。
3、for 循环需要注意的是,设置循环的部分是一个父级作用域,循环体内部是一个单独的子作用域。
for (let i = 0; i < 3; i++) {
let i = 'abc';
console.log(i);
}
// abc
// abc
// abc
这个例子很好佐证了循环体内部的变量 i 和 循环变量 i 不是同一个作用域。