使用 Let 和 Const 进行变量提升
虽然使用 var 声明的变量确实会提升,但使用 let 和 const 声明的变量的行为在这方面可能会令人困惑。为了解决这个困惑,让我们分解一下发生了什么。
提升:JavaScript 中的通用概念
JavaScript 中的所有 变量声明,包括 var 、let、const、函数和类声明被提升。本质上,标识符在其声明的作用域内可用。
x = "global"; (function() { x; // not "global" { x; // not "global" let y; // not initialized } var x = "local"; let y = "local"; });
在此示例中,所有变量声明都在各自的作用域(函数和块)内提升。
临时死区:Let 和 Const 的例外
var 声明和let/const 声明位于初始化中。当在作用域顶部创建绑定时,var 和其他旧式声明将使用 undefined 或函数对象进行初始化。相比之下,let 和 const 声明在语句执行之前一直保持未初始化。
这会创建所谓的临时死区 - 变量创建和执行之间的一段时间。它的初始化。尝试访问此区域内的变量会导致 ReferenceError 异常。
x = y = "global"; (function() { x; // undefined y; // ReferenceError: y is not defined var x = "local"; let y = "local"; }); // Block where temporal dead zone applies
Let 和 Const 在提升方面没有区别
let 和 const 声明都遵循相同的提升行为。唯一的区别是 const 变量必须在声明时初始化,并且以后不能重新赋值。
以上是JavaScript 中'var”、'let”和'const”之间的提升、临时死区和初始化有何不同?的详细内容。更多信息请关注PHP中文网其他相关文章!