首页 > web前端 > js教程 > JavaScript 中'var”、'let”和'const”之间的提升、临时死区和初始化有何不同?

JavaScript 中'var”、'let”和'const”之间的提升、临时死区和初始化有何不同?

Patricia Arquette
发布: 2024-12-31 07:08:09
原创
864 人浏览过

How Do Hoisting, the Temporal Dead Zone, and Initialization Differ Between `var`, `let`, and `const` in JavaScript?

使用 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板