提升使用 let 或 const 声明的变量
虽然使用 var 声明的变量在提升过程中的行为符合预期,但使用 let 或 const 声明的变量表现出不同的行为。
全部提升声明
所有 JavaScript 声明(var、let、const、function、function*、class)都会经历提升,这意味着它们在各自范围内的任何位置都可以被识别。
初始化区别
但是,var/function/function* 和 的区别let/const/class 声明在于它们的初始化。从作用域开始时创建绑定那一刻起,Var 声明就被初始化为 undefined。相比之下,let/const/class 声明在其语句被求值之前保持未初始化状态。
未初始化变量的临时死区
此未初始化状态创建了一个“临时死区” “在初始化之前访问变量会导致ReferenceError.
示例:
x = y = "global"; (function() { x; // undefined y; // Reference error: y is not defined var x = "local"; let y = "local"; }());
提升中的 let 与 const
Let 和 const 的操作方式相同的吊装。它们之间的区别在于,常量必须在声明时赋值。
结论
用 let 或 const 声明的变量会被提升,但它们在内部保持未初始化状态。暂时的死区,直到处理其声明语句。过早访问它们将导致引用错误。
以上是JavaScript 提升中的'let”和'const”与'var”有何不同?的详细内容。更多信息请关注PHP中文网其他相关文章!