Tomporal Dead Zone (TDZ)是ES2015中对作用域新的专用定义。是对于某些遇到在区块作用域绑定早于声明语句时的情况。Tomporal Dead Zone (TDZ)可以理解为时间上无法达到的区域,简称“时间死区”或者“暂时死区”。

请思考下面代码,结果会是神马?

1 console.log(a);
2 var a = 12;

如果你了解变量预编译过程,变量提升,那么很容易就会知道,这段代码相当于:

1 var a;
2 console.log(a);

因此,会输出undefined。

而在ES2016中,使用let命令,会产生什么样的结果:

1 alert(a);
2 let a = 5;

浏览器报错:ReferenceError: a is not defined

原因是,我们忽略了let暂时性死区

如下所示:

1 alert(a);//TDZ暂时性死区
2 let a = 5;//TDZ结束

其他影响,

对TDZ期间中的变量/常量作任何的访问动作,一律会抛出错误,需要注意:

typeof x // "undefined"

{// TDZtypeof a // ReferenceErrorlet a = 12
}

转载于:https://www.cnblogs.com/liubeimeng/p/10687154.html

ES2015中let的暂时性死区(TDZ)相关推荐

  1. 【前端17_JS】ES 6:Let 、Const、对象冻结、解构赋值、暂时性死区 TDZ、惰性求值、模板字符串

    ES 6 简介 let 声明变量 变量不提升 暂时性死区 TDZ const 静态变量 (常量*) 实质 引申 对象冻结 解构赋值 起步 ...arr 展开运算符 ...[] 数组拓展运算符 传参 找 ...

  2. 理解ES6中暂时性死区TDZ

    什么是暂时性死区 ES6中,在代码块内,使用let/const命令声明变量之前,该变量都是不可用的,在变量声明之前属于该变量的"死区".这在语法上,称为"暂时性死区&qu ...

  3. 暂时性死区(TDZ)

    常见js面试题之一: 提示:又是一道常见的前端面试题,什么是暂时性死区? 问题描述: console.log(a);var a = 1; 日志输出:undefined console.log(a);l ...

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

    常见js面试题之一: 提示:又是一道常见的前端面试题,什么是暂时性死区? 问题描述: console.log(a);var a = 1; 日志输出:undefined console.log(a);l ...

  5. JS:变量提升与临时性死区TDZ

    一.解析过程 js运行前会有编译解析过程,有些错误会在编译过程中被发现. <body><script>var web = 'yooo';console.log(web);var ...

  6. let/const 的变量提升与暂时性死区

    从一道面试题说起 请说出 let,const,var 的区别 大部分的回答是这样的,甚至很多博客中的答案也是这样的: let/const 提供了块级作用域 let 不能重复定义 var 有变量提升,l ...

  7. let暂时性死区理解

    Let 中提到的暂时性死区到底是什么,它的产生原因是? ES6 规定,如果区块中存在 let 和 const 命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域.凡是在声明之前就使用这些变 ...

  8. 理解ES6中的TDZ(暂时性死区)

    什么是TDZ Temporal Dead Zone(TDZ)是ES6(ES2015)中对作用域新的专用语义.TDZ名词并没有明确地写在ES6的标准文件中,一开始是出现在ES Discussion讨论区 ...

  9. 详解JS中的TDZ(暂时性死区)

    TDZ(temporal dead zone)暂时性死区 来源: ES6 明确规定,如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域.凡是在声明之前就使用 ...

最新文章

  1. 20年研发管理经验谈(五)
  2. scvmm live migration issue
  3. Markdown简单语法总结
  4. php 伪静态有什么用,网站为什么要做伪静态,做伪静态的好处是什么?
  5. 《TCP/IP详解》学习笔记(四):ICMP 协议、ping 和 Traceroute
  6. Android开发人员应该知道的一些技术
  7. 猪场管理网站php,某养猪场网站整站 v1.1
  8. Java 面向对象:构造器详解
  9. storm如何集成kafka
  10. Codeforces Round #219 (Div. 2) 解题报告
  11. stm32 JTAG和SWD的使用区别简要介绍
  12. java面试题学生表成绩表老师表_SQL经典学生老师成绩表面试题
  13. 阿里云资深技术专家杨皓然:Serverless 是正在发生的未来
  14. Android音乐播放器demo
  15. Python语音转文字、音频切割、语音识别
  16. 6个最值得Down的社交网络图标矢量素材集
  17. 拒绝纷繁复杂 快速制表软件分享
  18. 瑞昱rtl8168网卡支持Linux吗,我的集成网卡RTL8111/8168B终于搞定(非常感谢ubuntu中文论坛)...
  19. 使用Unity编写传统ARPG游戏人物操作方式(二)
  20. RHEL6 或CentOS 6配置共享存储--使用iSCSI

热门文章

  1. 苹果录屏功能没有声音_手机录屏没有声音如何处理?可以从这三个方面入手看看...
  2. 【历史上的今天】1 月 18 日:微软的“技术布道者”;反盗版法案抗议行动;哈佛 Mark I 灵感起源
  3. NGUI完美高性能无限滚动
  4. 计算机基础土星,2012年一级B笔试模拟343
  5. 【数字IC】深入浅出理解I2C协议
  6. mx250 计算能力_mx250显卡性能怎么样,mx250显卡性能相当于GTX多少
  7. 2020阿里招聘岗位要求
  8. numpy矩阵升维,拼接
  9. 文本识别综述 <软件学报_王建新等、中国图象图形学报_刘崇宇等>
  10. 直播APP开发成品案例