为什么暂时性死区代码执行输出错误信息不是x is not defined?
Posted Toyako
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么暂时性死区代码执行输出错误信息不是x is not defined?相关的知识,希望对你有一定的参考价值。
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的报错信息更加准确,更友好
以上是关于为什么暂时性死区代码执行输出错误信息不是x is not defined?的主要内容,如果未能解决你的问题,请参考以下文章