首页 > 解决方案 > javascript LET 变量 - 为什么在初始化变量之前记录时出现未定义而不是错误?

问题描述

我知道 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

标签: javascript

解决方案


"let x" 声明了一个变量,但还没有给它赋值。根据 Mozilla 的 JavaScript 文档 - “未分配值的变量是未定义类型。” 因此,“x”在被赋值之前的值是“未定义的”。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined#Description


推荐阅读