let const 都有暂时性死区 这是大家都知道的
凡是在声明之前就使用这些变量,就会报错。
隐蔽性暂时性死区
function bar(x = y, y = 2) {
return [x, y];
}
bar(); // 报错
这里因为赋值 x=y
把y的值赋给x
此时y还没有定义 就出现了暂时性死区
修改后
function bar(x = 2, y = x) {
return [x, y];
}
bar(); // [2, 2]
下面还有个例子
// 不报错
var x = x;
// 报错
let x = x;
// ReferenceError: x is not defined
使用let
声明变量时,只要变量在还没有声明完成前使用,就会报错。