Date 20201211 By WJB
暂时性死区 ( temporal dead zone ): 变量所在作用域开始到变量声明的位置 之间的区域 称为临时性死区。
在以前文章《JavaScript-var-变量提升》(地址:https://blog.csdn.net/wangjianbo09/article/details/110931338)中谈论了变量提升问题,有利有弊。
弊端是造成代码用编译冗余,如何解决这个问题呢?这篇文章就给出答案。
ES6中提出的临时性死区(TDC),可以避免变量提升。变量声明时使用关键字 let/const ,就约束了变量声明位置,编译时不会提升变量声明位置。
也就是在TDC中不可以使用变量。
看如下对比代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>index1</title>
</head>
<body>
<script>
console.log(a);
var a ='test';
</script>
</body>
</html>
运行结果:
使用var 关键字声明对象,变量在是临时性死区可以被调用。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>index1</title>
</head>
<body>
<script>
console.log(a);
let a ='test';
</script>
</body>
</html>
运行结果
编译时就有报错通知:变量使用前被使用了。
在C++,c#多种语言中都要求变量必须使用前声明,语言要求严格,但对程序总体质量是有所提升的。