zoukankan      html  css  js  c++  java
  • ES6——TDZ(暂时性死区)

    暂时性的死区(Temporal Dead Zone),简写为 TDZ:

    只要块级作用域里存在let命令,它所声明的变量就绑定这个区域,不在受外部的影响

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

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

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

    function show(falg){                          // JavaScript引擎在扫描代码发现变量      TDZ暂时性死区(有let申明)
    console.log(a);//报错: a is not defined               //a                                放入(未申明引用报错)       
        if(falg){//在第134行和第137行的大括号之间,
            let a="111";                                 //a="111"
            console.log(a); // 111                       //a                                移除(已申明引用移除)
        }else{
            console.log(a);//报错: a is not defined       //a                                放入(未申明引用报错)
        }
        
    }
    show(true);
    show(false);
  • 相关阅读:
    struts2通过配置文件进行数据校验无效
    几个windows使用小技巧
    让程序员抓狂的排序算法教学视频
    关于js中使用close方法无法关闭firefox浏览器
    JavaScript基础
    最全的Java面试宝典
    cookie注入
    Google搜索技巧
    Java之多态
    Winform之GDI绘制验证码
  • 原文地址:https://www.cnblogs.com/missme-lina/p/10187996.html
Copyright © 2011-2022 走看看