什么是暂时性死区(TDZ)?

article/2025/10/14 6:03:29

常见js面试题之一:

提示:又是一道常见的前端面试题,什么是暂时性死区?


问题描述:

        console.log(a);var a = 1;
日志输出:undefined
        console.log(a);let a = 1;

在这里插入图片描述

下面我们可以看到这里的日志输出出现了报错,

‘Uncaught ReferenceError: Cannot access ‘a’ before initialization’
未捕获的引用错误:在初始化之前无法访问“a”

原因分析:

为什么会出现这种情况呢?这就是我们今天要了解的js中的暂时性死区( temporal dead zone,简称TDZ );
接下来我们看一下关于ES6标准中关于暂时性死区的解释:

The variables are created when their containing Lexical Environment is
instantiated but may not be accessed inany way until the variable’s
LexicalBinding is evaluated.

翻译过来的意思就是:

当程序的控制流程在新的作用域(module function 或 block
作用域)进行实例化时,在此作用域中用let/const声明的变量会先在作用域中被创建出来,但因此时还未进行词法绑定,所以是不能被访问的,如果访问就会抛出错误。因此,在这运行流程进入作用域创建变量,到变量可以被访问之间的这一段时间,就称之为暂时死区。

造成该错误的主要原因是:ES6新增的let、const关键字声明的变量会产生块级作用域,如果变量在当前作用域中被创建之前被创建出来,由于此时还未完成语法绑定,如果我们访问或使用该变量,就会产生暂时性死区的问题,由此我们可以得知,从变量的创建到语法绑定之间这一段空间,我们就可以理解为‘暂时性死区’

那么还有别的会造成引发暂时性死区的现象吗?

let/const关键字未出现之前,typeof运算符是百分之百安全的,现在也会引发暂时性死区的发生,像import关键字引入公共模块、使用new class创建类的方式,也会引发暂时性死区,究其原因还是变量的声明先与使用

与上述关键字相反、var、function等关键字却不会受到TDZ(暂时性死区)的影响,如果在变量常见之前访问,返回结果为undefined

提示:

提示:TDZ(暂时性死区)是一个很重要的概念,在很多的面试环节都有可能问到该概念,其影响let、const、import、class、typeof等关键字的可用性,不容忽视;因此大家一定要养成良好的变成习惯,变量的使用一定要在声明时候使用,否则就会引发‘暂时性死区’


http://chatgpt.dhexx.cn/article/4Uo88M4J.shtml

相关文章

2021-02-04

一、死区初认识: 死区又称不作用区,是指控制系统的传递函数中对应输出为零的输入信号范围。 也就是说,输入信号在这个范围内,输出始终为零。输入没法影响输出,没法发挥作用,所以叫不作用区,或者…

死区4个状态分析,以及死区时间计算

死区时间的作用主要在于两点: 1)通过上下开关的时间差防止了 H 桥直通问题。 2)为开关两端的缓冲电容提供一个充放电时间,来实现开关的零电压开通(ZVS)以降低传输功率过程中的损耗,提高传输效率。 现在注重死区分析的很大一部分原因是现在…

扇入和扇出系数

扇出系数是门电路输出低电平时允许带同类门电路的个数。(输出电流能驱动负载数目)扇入系数是指门电路允许的输入端数目。(最大能承受电流条件下,能允许的输入负载数目)

镂空数学符号空心体数学符号

https://www.zhihu.com/question/297453597 word 或 WPS里,插入 -> 符号 -> 其他符号,在字体里选择 Cambria Math,然后下拉到中部可以看到:

小符号 大影响

项目场景&#xff1a; 用函数实现判断100~200之间的素数 问题描述&#xff1a; 写代码过程成中在if (1 is_prime(i))语句后面加上了;(分号&#xff09; 从而导致代码运行结果出现偏差。 #include<stdio.h> #include<math.h> int is_prime(int i) {int j 0;fo…

FPGA 扇入扇出

最近在学习有关FPGA方面的知识&#xff0c;在看一些FPGA的datasheet时&#xff0c;看到fan-out和fan-in这样的字眼&#xff0c;乍一看还真不知所云&#xff0c;继续往下看还是云里雾里&#xff0c;于是用Google在线翻译了一下&#xff0c;上面赫然是扇入扇出&#xff0c;不用想…

特殊符号组成的图案

在命令行利用特殊符号变成代码图案 各位博客们大家好啊&#xff0c;初次与大家会面&#xff0c;我就以图案的形式跟大家见面&#xff0c;接下来我会经常更新我个人的博客&#xff0c;提一些经常用到的技术点&#xff0c;也希望能够帮助大家在工作以及学习中有很好的帮助&#…

AD_BGA扇出

Fanout: 将贴片器件的引脚&#xff0c;引出一小段线加入过孔&#xff0c;使得信号线可以通过其他层完成&#xff1b; BGA_Fanout Step 1> 规则设置1.1> 过孔规则1.2> 间距规则1.3> 线宽规则 Step 2> 自动扇出> 外层打孔 Step 1> 规则设置 1.1> 过孔规…

用计算机打出小星星,怎样打出一个小星星和更多的符号?

满意答案 gldi70 2014.06.28 采纳率&#xff1a;54% 等级&#xff1a;11 已帮助&#xff1a;4806人 全在这里了~~自己找把~ ! " # $ % & ( ) * , - . / 0 1 2 3 4 5 6 7 8 9 : ; < > A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ a …

编程的扇入与扇出

大家都知道模块化编程&#xff0c;也就是重复代码尽量提炼成函数&#xff0c;自己可以用&#xff0c;别人也可以用&#xff0c;但是提炼出什么样的函数才算好呢&#xff1f;这就要用到扇入与扇出的概念。 模块的扇出是指本模块的直属下层模块的个数。如图&#xff1a; 模块A的扇…

Altium Designer BGA 扇孔/扇出

1.创建Room 2.设置间距规则 3.设置线宽规则 4.设置过孔 5.扇出 按照需求扇出&#xff0c;如无网络引脚是否扇出&#xff0c;外面2列是否扇出等

关于扇出(Fanout)(二)

原文发布时间&#xff1a;2010-12-30 作者&#xff1a;毛毛虫 在《关于扇出&#xff08;Fanout&#xff09;&#xff08;一&#xff09;》中&#xff0c;提到了设置数据集扇出的相关内容。现在针对这一问题举一个例子。 现在我有一个dwg文件&#xff0c;想使用一个含有多个多…

关于 扇出 Fanout

数字系统中的扇出 在一些数字系统中&#xff0c;必须有一个单一的TTL逻辑门来驱动10个以上的其他门或驱动器。这种情况下&#xff0c;被称为缓冲器的驱动器可以用在TTL逻辑门与它必须驱动的多重驱动器之间。这种类型的缓冲器有25至30个扇出信号。逻辑反向器&#xff08;也被称为…

扇出和扇入

在软件设计中&#xff0c;扇入和扇出的概念是指应用程序模块之间的层次调用情况。 按照结构化设计方法&#xff0c;一个应用程序是由多个功能相对独立的模块所组成。 扇入&#xff1a;是指直接调用该模块的上级模块的个数。扇入大表示模块的复用程序高。 扇出&#xff1a;是指…

扇入和扇出

扇出&#xff08;fan-out&#xff09;是一个定义单个逻辑门能够驱动的数字信号输入最大量的专业术语。大多数的TTL逻辑门能够为10个其他数字门或 驱动器提供信号。所以&#xff0c;一个典型的TTL逻辑门有10个扇出信号。 在一些 数字系统中&#xff0c;必须有一个单一的TTL逻辑门…

扇入扇出的概念

转自&#xff1a;http://langhebw.blog.163.com/blog/static/1132586482011517382379/ 最近在学习有关FPGA方面的知识&#xff0c;在看一些FPGA的datasheet时&#xff0c;看到fan-out和fan-in这样的字眼&#xff0c;乍一看还真不知所云&#xff0c;继续往下看还是云里雾里&…

信号的扇入扇出

扇入系数是指门电路允许的输入端数目。扇出系数是指一个门的输出端所驱动同类型门的个数&#xff0c;或称负载能力。 多扇出问题&#xff0c;会严重影响FPGA布线的稳定性&#xff0c;不利于时序收敛 当输出负载大于它的扇出能力的时候&#xff0c;就会有如下的效应&#xff1a…

扇入扇出

最近在学习有关FPGA方面的知识&#xff0c;在看一些FPGA的datasheet时&#xff0c;看到fan-out和fan-in这样的字眼&#xff0c;乍一看还真不知所云&#xff0c;继续往下看还是云里雾里&#xff0c;于是用Google在线翻译了一下&#xff0c;上面赫然是扇入扇出&#xff0c;不用想…

【面试】TCP的三次握手

TCP三次握手&#xff1a; 建立安全可靠的传输协议 TCP:一种 传输控制协议 TCP作用&#xff1a;保证http网络传输是 安全可靠的(检测客户端 与 服务器的网卡是不是通的) TCP三次握手&#xff1a; 第一次&#xff1a; 浏览器->服务器 (你能听到我说话吗&#xff1f; 检测浏览…

一文读懂TCP的三次握手和四次挥手

目录 1.认识TCP协议 2.TCP的三次握手 3.TCP的四次挥手 4.小结 1.挥手为什么需要四次&#xff1f; 2.2MSL等待状态 3.次挥手释放连接时&#xff0c;等待2MSL的意义 1.认识TCP协议 传输控制协议&#xff08;TCP&#xff0c;Transmission Control Protocol&#xff09;是一种…