概述
关于TDZ(暂时性死区的小知识)
# es6示例代码
es6中,下面的代码执行后会报ReferenceError: a is not defined的错误
let a = 'global'
{
console.log(a) // ReferenceError: a is not defined
let a = 1
}
原因:
- console.log(a) 中的 a 指的是下面的 a,而不是全局的 a
- 执行 log 时 a 还没「初始化」,所以不能使用(也就是所谓的暂时死区)
# why
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声明的变量会先在作用域中被创建出来,但因此时还未进行词法绑定,所以是不能被访问的,如果访问就会抛出错误。因此,在这运行流程进入作用域创建变量,到变量可以被访问之间的这一段时间,就称之为暂时死区。
let/const 命令会使区块形成封闭的作用域。若在声明之前使用变量,就会报错。
在代码块内,使用 let 命令声明变量之前,该变量都是不可用的。
语法上称为 “暂时性死区”( temporal dead zone)
# advice
所以这就促使我们养成良好的编程习惯,变量一定要先声明后使用????????
最后
以上就是懦弱康乃馨为你收集整理的了解下es6中的let、const暂时性死区的全部内容,希望文章能够帮你解决了解下es6中的let、const暂时性死区所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复