【发布时间】:2019-10-25 20:55:26
【问题描述】:
我知道 const/let 上有很多帖子,但我找不到任何回答我的问题的内容:
据我所知,使用 let 声明的变量被提升到顶部,但没有像使用 var 那样使用 undefined 进行初始化,因此它们会在初始化之前创建一个临时死区。
在下面的示例中,我记录未定义。如果我的控制台日志在初始化之前出现,为什么它是未定义的?为什么我没有看到参考错误?
let x;
console.log("x: ", x)
x = 1;
//without x= 1 it would be undefined too
编辑
let x;
console.log("x: ", x)
最终会被阅读完全一样的
console.log("x: ", x);
let x = 1
【问题讨论】:
-
您的解释有误 - initialisation 步骤在您到达
let x时完成 -x=1是 assignment 步骤.这是两个不同的东西。如果您将console.log("x: ", x)作为let x之前的第一个语句,您将处于时间死区 -
请注意“温度”。在那句话中是“暂时的”而不是“暂时的”。 "temp" 通常是后者的缩写。
标签: javascript