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