关于javascript:为什么暂时性死区代码执行输出错误信息不是x-is-not-defined

33次阅读

共计 598 个字符,预计需要花费 2 分钟才能阅读完成。

1.console.log(x) // Uncaught ReferenceError: x is not defined
2.let x = 1
大家在理解暂时性死区(TDZ)的时候常常在网上看到相似下面这段代码

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

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 的报错信息更加精确,更敌对

正文完
 0