JavaScript 中的临时死区 (TDZ) 和提升:

javascript 中的临时死区 (tdz) 和提升:

JavaScript 中的临时死区 (TDZ) 和提升:

临时死区(TDZ):临时死区是指进入作用域(如块或函数)和声明变量之间的时间段。在此区域中,任何访问变量的尝试都将导致引用错误。 TDZ 存在于初始化之前使用 let、const 和 class 声明的变量。

示例:

console.log(myVar); // 未定义
控制台.log(myLet); // ReferenceError: 初始化前无法访问 ‘myLet’

var myVar = 5;
让 myLet = 10;

在上面的示例中,myVar 是使用 var 声明的,因此它被提升并初始化为未定义。但 myLet 在声明之前一直处于临时死区,因此尝试在声明之前访问它会引发 ReferenceError。

TDZ 要点:

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

使用 let 或 const 声明的变量在块作用域内声明之前不可访问,即使它们被提升。

这可以防止在显式初始化变量之前使用变量。

提升:提升是指 JavaScript 中的行为,其中变量和函数声明在编译阶段移动到其作用域的顶部(全局作用域或函数/块作用域)。但是,仅提升声明,而不提升初始化。

示例:

console.log(myVar); // 未定义
var myVar = 5;

在上面的例子中,myVar的声明被提升到顶部,但它的初始化(myVar = 5)仍然保留在它被写入的地方。因此,当在初始化之前调用 console.log(myVar) 时,它会返回 undefined。

var、let、const 和函数的提升:

var:用 var 声明的变量会被提升并用 undefined 初始化。

console.log(myVar); // 未定义
var myVar = 10;

let 和 const:使用 let 和 const 声明的变量会被提升,但不会被初始化。它们保留在 TDZ 中直至初始化。

console.log(myLet); // 引用错误
让 myLet = 20;

函数声明:函数声明是完全提升的,这意味着您甚至可以在代码中声明函数之前调用该函数。

myFunc(); //“你好!”

函数 myFunc() {
console.log(“你好!”);
}

提升和 TDZ 之间的主要区别:

提升将变量和函数声明提升到其作用域的顶部。

let、const 和 class 会出现临时死区,其中变量被提升,但在初始化之前无法访问。这可以防止在声明之前访问变量。

以上就是JavaScript 中的临时死区 (TDZ) 和提升:的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2668691.html

(0)
上一篇 2025年3月7日 12:34:58
下一篇 2025年2月19日 00:15:09

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 执行上下文和调用堆栈

    为顶级代码创建全局执行上下文,即不在任何 fn 内的代码。因此,首先执行 fn 之外的代码。fn-decln/exprsn 的 fn 主体内的代码仅在调用时执行。 执行上下文(ec) 一段js执行的环境。存储一些要执行的代码的所有必要信息,…

    2025年3月7日
    200
  • 适用于您日常工作流程的 ESEST 提示、技巧、最佳实践和代码片段示例

    es6 (ecmascript 2015) 对 javascript 进行了重大改革,引入了许多新功能,可以简化您的编码并提高项目的整体质量。 在这篇文章中,我们将介绍一些es2015 提示、技巧、最佳实践,并提供代码片段示例来增强您的日常…

    2025年3月7日
    200
  • 起重面试问答

    1. javascript 中什么是提升? 答案: 提升是执行上下文创建阶段为变量和函数分配内存的过程。在此过程中,为变量分配了内存,并为变量分配了值 undefined。对于函数,整个函数定义存储在内存中的特定地址,并且对其的引用放置在该…

    2025年3月7日
    200
  • TypeScript 中的 TSyringe 和依赖注入

    我不太喜欢像 nestjs 这样的大型框架;我一直喜欢以我想要的方式构建我的软件的自由,以及我以轻量级方式决定的结构。但在测试 nestjs 时我喜欢的是依赖注入。 依赖注入(di)是一种设计模式,它允许我们通过消除创建和管理类依赖关系的责…

    2025年3月7日
    200
  • JavaScript 中的作用域和提升 – 全面解释

    javascript 中的作用域 javascript 中的范围是指代码中可以使用或查看某些变量或函数的区域。它定义了您可以在何处访问特定值或操作。 javascript 中的作用域主要有两种类型: 全球范围 本地作用域(函数和块作用域) …

    2025年3月7日
    200
  • Factory Design Pattern in JavaScript

    工厂设计模式是一种创建型设计模式,它提供了一种创建对象的方法,而无需指定将创建的对象的确切类。它涉及创建一个工厂方法,该方法根据输入或配置决定要实例化哪个类。当我们需要将所有对象创建及其业务逻辑保留在一个地方时使用它。 工厂设计模式的主要优…

    2025年3月7日
    200
  • 了解 JavaScript 中的临时死区 (TDZ)

    简介:应对 javascript 的临时死区挑战 在使用 javascript 时,开发人员经常面临由变量作用域问题引起的棘手错误,特别是在使用 let 和 const 进行声明时。这些问题通常是由于临时死区 (tdz) 引起的,这个概念尚…

    2025年3月7日
    200
  • ESnd 箭头函数综合指南

    es6简介 ecmascript 2015,也称为 es6 (ecmascript 6),是对 javascript 的重大更新,引入了新的语法和功能,使编码更高效、更易于管理。 javascript 是最流行的 web 开发编程语言之一,…

    2025年3月7日
    200
  • 了解 JavaScript 提升:简单指南

    如果您是 javascript 新手,您可能会遇到令人困惑的情况,即变量似乎未定义或意外弹出诸如 referenceerror 之类的错误。这通常可以追溯到一个称为提升的概念。但是什么是提升,它如何影响您的代码? 在本指南中,我们将详细介绍…

    2025年3月7日
    200
  • Javascript重要概念||重要的 JavaScript 概念

    逐步使用代码示例来帮助您更好地理解每个概念。 1. js简介 javascript 是一种多功能语言,可以在浏览器或服务器上运行(使用 node.js)。它用于使网页具有交互性。 hello, javascript! click me fu…

    2025年3月7日
    200

发表回复

登录后才能评论