JavaScript-临时性死区(TDC)-解决变量提升造成的冗余

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#多种语言中都要求变量必须使用前声明,语言要求严格,但对程序总体质量是有所提升的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值