临时死区(Temporal Dead Zone),简写为 TDZ。

letconst 声明的变量不会被提升到作用域顶部,如果在声明前访问这些变量,会导致错误:

console.log(typeof value) // ReferenceError: value is not defined
let value = 1

这是因为 JavaScript 引擎在扫描代码发现变量声明时,要么将他们提升到作用域顶部(遇到 var 声明),要么将声明放在 TDZ 中(遇到 let 和 const 声明)。访问 TDZ 中的变量会触发运行时错误。只有执行过变量声明语句后,变量才会从 TDZ 中移除,然后方可访问。

看似很好理解,但不保证不犯错:

var value = 'global'// 例子1
(function() {console.log(value)let value = 'local'
}())// 例子2
{console.log(value)const value = 'local'
}

两个例子中,结果并不会打印 "gobal" 而是报错 Cannot access 'value' before initialization,就是因为 TDZ 的缘故。

JS临时死区(TDZ)相关推荐

  1. ES6_1.块级作用域绑定_临时死区TDZ

    临时死区 JavaScript引擎在扫描代码发现变量声明时,要么将它们提升至作用域顶部(var声明),要么将声明放到TDZ中(let.const).访问TDZ中的变量会触发运行时错误.只有执行过变量声 ...

  2. Javascript基础之-var,let和const深入解析(二) - 三者的规范描述、临时死区 (TDZ)、双定义

    文章目录 # var 规范 - 描述 # let 和 const 规范 - 描述 # 临时死区 (TDZ) # 双定义 # 总结 你想在在变量声明之前就使用变量?以后再也别这样做了. 新的声明方式(l ...

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

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

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

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

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

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

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

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

  7. 暂时性死区(TDZ)

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

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

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

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

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

最新文章

  1. 求最小众倍数java,【python网易】最小倍众数
  2. 跟我做CVS版本管理试验
  3. python找出值为nan_Python Numpy:找到list中的np.nan值方法
  4. python 加注拼音-Python 获取中文字拼音首个字母的方法
  5. css sprite css雪碧图生成工具
  6. (转)upper_bound()与lower_bound()使用方法
  7. python PyQt5.QtWidgets.QWidget类
  8. FreeModbus源码获取
  9. boot spring 获取请求端口浩_Spring精华问答 | 如何集成Spring Boot?
  10. 格力又有新专利了:“一种铁芯冲片、电机及新能源汽车”
  11. jq操作url请求的参数
  12. 语言 OJ 高低位逆转_用于检测污水井内水位高低的报警器--液位开关
  13. python电脑下载-PC端数据下载软件开发(Python)
  14. html新建盒子,html+css 盒子模式展示(备查)
  15. Sm4【国密4加密解密】实战
  16. 使用rpm 安装wget
  17. 我的工程学导论学习心得1
  18. SE11字段过多时怎么快速建表
  19. “蚂蚁牙黑,蚂蚁呀吼”一夜间火遍全网?别忽略了潜在风险
  20. Arduino机器人快速上手经验分享(L298N马达驱动,摇杆模块)

热门文章

  1. [React Native] 动画 · Animated
  2. 蚂蚁区块链BaaS平台架构与实践
  3. python从入门到人生巅峰
  4. ICC图文流程——(六)可造性设计Chip finishing
  5. 用matlab求二重积分例题_matlab计算二重积分
  6. python类的实例化和继承
  7. 香港驾驶执照免试换领的官方收取费用是多少?可以在那些国家与地方使用。
  8. 一文读懂Soul上市:注册用户破亿,上市是福还是祸?
  9. NS2学习---可视化Tcl生成工具NSG2
  10. 复杂系统理论解释了Covid为何粉碎世界