暂时性死区(TDZ)

article/2025/10/14 5:41:47

常见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/CHxmZr9h.shtml

相关文章

PWM死区(Dead Zone)的作用和意义

PWM输出时的Dead Zone(死区)作用是在电平翻转时插入一个时间间隔,避免关闭前一个设备和打开后一个设备时因为开关速度的问题出现同时开启状态而增加负荷的情况(在没有彻底关闭前打开了后一个设备),尤其是电流过大时容易造成短路等损坏设备,如…

死区时间和消隐时间

1 死区时间 PWM是脉冲宽度调制,常用到整流和逆变,这就需要用到整流桥和逆变桥。对于三相电,需要三个桥臂。以高低电平为例,每个桥臂上有两个电子器件,比如IGBT,大致如下图所示: 这两个IGBT不能同…

stm32关于带死区时间的互补PWM输出

1.互补PWM输出简介 在使用stm32输出PWM波形时,笔者所用的stm32f103zet6中的高级定时器TIM1和TIM8可以输出互补的PWM波形,使用互补的PWM波常见与一些半桥电路和全桥电路控制中,使用MCU自带的高级时钟可以简便的解决互补PWM输出问题。 笔者在控制半桥电路中应用了MCU自带的TIM1时…

PWM互补输出,以及死区时间计算

本文基于野火例程进行解说 实验内容 本次实验输出一对互补的pwm波,且进行死区时间的计算说明。 代码 互补输出对应的定时器初始化代码: bsp_advance_tim.c /********************************************************************************* fi…

死区补偿---学习笔记

最近调试中发现,死区补偿对电流谐波和电流带宽影响挺大,于是对死区补偿产生浓厚兴趣,找来几篇文章粗读并做一下笔记。 传统做法 无非就是根据电流方向补偿,假如svpwm计算出的A相理论导通实践为T1,死区时间是Td&#…

什么是PWM“死区”?

关注、星标公众号,不错过精彩内容 来源:传感器与检测技术 编辑整理:strongerHuang PWM是脉宽调制,在电力电子中,最常用的就是整流和逆变。这就需要用到整流桥和逆变桥。对三相电来说,就需要三个桥臂。以两电…

死区时间的分析与设置

出现死区的主要原因是因为MOS管的源极和栅极之间的结电容。现在在栅极加上一个门电路。当门电路输出的信号跳变的瞬间,电流是非常大的,会导致MOS管发热,所以需要在门电路后面再串联一个电阻,这个电阻很小,一般在10Ω左…

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

常见js面试题之一: 提示:又是一道常见的前端面试题,什么是暂时性死区? 问题描述: console.log(a);var a 1;日志输出:undefined console.log(a);let a 1;下面我们可以看到这里的日志输出出现了报错&#…

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;想使用一个含有多个多…