1. console.log(x) // Uncaught ReferenceError: x is not defined
  2. let x = 1

大家在了解暂时性死区的时候经常在网上看到类似上面这段代码

但是,这段代码是不严谨的,问题就出在这个报错信息,在浏览器中执行,报错信息是这个

Uncaught ReferenceError: Cannot access 'x' before initialization

这究竟是怎么回事呢?

我仔细查了一下,错误信息不一致的原因是nodejs版本更新导致

nodejs 12开始更新了暂时性死区的报错信息,报错信息变得更加准确

举例说明

(1)调用不存在的变量

console.log(xxx); // Uncaught ReferenceError: xxx is not defined

(2)let 暂时性死区(node 12之前的版本)

console.log(yyy); // Uncaught ReferenceError: yyy is not defined
let yyy = 1;

上面两个例子可以看出,不同的错误原因,但是错误信息是一样的,这样的错误信息不太好区分具体原因

再来看node12版本

console.log(yyy); // Uncaught ReferenceError: Cannot access 'x' before initialization
let yyy = 1;

可以看出,node12的报错信息更加准确,更友好

所以大家不要再纠结网上关于暂时性死区的例子执行的错误信息不一致的问题啦,毕竟node更新迭代这么快


--------------

原创文章出自 木法传,如转载请注明本文链接:https://www.mofazhuan.com/329.html

--------------