- let 命令
** 不允许重复声明
每一层 {} 都为一个块级 **
let 只会在块级作用域有效
if(true){
let a = 1;
var b = 2;
}
a // a is not defind
b // 2
let 不会发生"变量提升",所以在变量声明前使用会报错
a // ReferenceError
let a = 1;
块级作用域内存在let命令,它所声明的变量就会绑定这个区域,并且不受外部影响
let a = 1;
if(true){
a // ReferenceError
let a = 2
}
参数x的默认值是另一个参数y,而此时y还没有声明
function fn(x = y, y = 2){
return [x, y];
}
fn(); // 报错