JavaScript变量提升指声明被移至作用域顶部:var声明与初始化为undefined一同提升;let/const仅声明提升,访问触发TDZ错误;函数声明完整提升可提前调用,函数表达式不提升。

JavaScript 的 hoisting(变量提升)是指在代码执行前,JavaScript 引擎会把 变量声明 和 函数声明 “提升”到当前作用域顶部的行为。注意:只有声明被提升,赋值不会被提升。
var 声明会被完全提升(声明 + 初始化为 undefined)
用 var 声明的变量,其声明会被提升到作用域顶部,并自动初始化为 undefined。所以你可以在声明前访问它,但值是 undefined,不会报错。
console.log(a); // undefinedvar a = 10;
这等价于:
var a; // 提升并初始化为 undefinedconsole.log(a); // undefineda = 10; // 赋值不提升
let 和 const 声明只提升声明,不初始化(存在暂时性死区 TDZ)
let 和 const 的声明会被提升,但不会被初始化。在声明语句执行前访问它们,会抛出 ReferenceError,这段区域就叫“暂时性死区”(Temporal Dead Zone)。
立即学习“Java免费学习笔记(深入)”;
console.log(b); // ReferenceError: Cannot access 'b' before initializationlet b = 20;
这是为了防止意外使用未初始化的变量,增强代码安全性。
标签: javascript java access 作用域
还木有评论哦,快来抢沙发吧~