ECMAScript 6 新特性之-块级作用域 let
Lasted 2020-01-10 13:33:29
let 语句声明一个块级作用域的本地变量,并且可选的将其初始化为一个值。
let 声明的变量只在其声明的块或子块中可用,这一点,与 var 相似。二者之间最主要的区别在于 var 声明的变量的作用域是整个封闭函数。
//ECMAScript 6 | ES6
function varTest() {
var x = 1;
{
var x = 2; // 同样的变量!
console.log(x); // 2
}
console.log(x); // 2
}
function letTest() {
let x = 1;
{
let x = 2; // 不同的变量
console.log(x); // 2
}
console.log(x); // 1
}
var x = 'global';
let y = 'global';
console.log(this.x); // "global"
console.log(this.y); // undefined
在同一个函数或块作用域中重复声明同一个变量会引起 SyntaxError。
if (x) {
let foo;
let foo; // SyntaxError thrown.
}
let x = 1;
switch(x) {
case 0:
let foo;
break;
case 1:
let foo; // SyntaxError for redeclaration.
break;
}