今天在写NodeJS代码的时候出现一个变量一直提示未定义,简化后的代码如下:
let param = 1;
{
console.log(param);
}
就在想,不至于啊。不是继承上层的声明吗?
继续看下去,发现原来看漏了一段,真正的代码应该是这样的:
let param = 1;
{
console.log(param);
let param = 2;
}
原来在块中又进行了一次声明,这个时候console语句中的param认的是块中声明的,基于变量不可提升的特性,console语句就报错了。
查了一下,据说这个叫“暂时性死区”。