2.1 let命令
2.1.1 基本用法
ES6新增了let命令,用于声明变量。其用法类似于var,但是所声明的变量只在let命令所在的代码块内有效。
{
let a = 10;
var b = 1;
}
a //ReferenceError: a is not defined.
b //1
上面的代码在代码块中分别使用let和var声明了两个变量。然后在代码块之外调用这两个变量,结果let声明的变量报错,var声明的变量返回了正确的值。
for循环的计数器就很适合使用let命令。
for(let i=0;i<10;i++) {
// ...
}
console.log(i);
//ReferenceError: i is not defined.
以上的代码中的计算器只在for循环体内有效,在循环外引用就会报错。
另外,for循环还有一个特别之处,就是设置循环变量的那部分是一个父作用域,而循环内部是一个单独的子作用域。
for(let i=0;i<3;i++) {
let i = 'abc';
console.log(i);
}
//abc
//abc
//abc
正确运行以上代码将输出3次abc,这表明函数内部的变量i与循环变量i不在同一个作用域,而是有各自单独的作用域。