javascript的hoisting是什么_它如何影响变量声明?

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

javascript的hoisting是什么_它如何影响变量声明?-第1张图片-佛山资讯网

JavaScript 的 hoisting(变量提升)是指在代码执行前,JavaScript 引擎会把 变量声明函数声明 “提升”到当前作用域顶部的行为。注意:只有声明被提升,赋值不会被提升。

var 声明会被完全提升(声明 + 初始化为 undefined)

var 声明的变量,其声明会被提升到作用域顶部,并自动初始化为 undefined。所以你可以在声明前访问它,但值是 undefined,不会报错。

  • console.log(a); // undefined
  • var a = 10;

这等价于:

  • var a; // 提升并初始化为 undefined
  • console.log(a); // undefined
  • a = 10; // 赋值不提升

let 和 const 声明只提升声明,不初始化(存在暂时性死区 TDZ)

letconst 的声明会被提升,但不会被初始化。在声明语句执行前访问它们,会抛出 ReferenceError,这段区域就叫“暂时性死区”(Temporal Dead Zone)。

立即学习“Java免费学习笔记(深入)”;

  • console.log(b); // ReferenceError: Cannot access 'b' before initialization
  • let b = 20;

这是为了防止意外使用未初始化的变量,增强代码安全性。

标签: javascript java access 作用域

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~