美文网首页
es6加入了哪些新特性

es6加入了哪些新特性

作者: 9月的甜橙子 | 来源:发表于2021-10-12 11:51 被阅读0次

    ES6 引入了 let 和 const 关键字,从而使 JavaScript 也能像其他语言一样拥有了块级作用域。

    function letTest() { 
      let x = 1; 
      if (true) { 
        let x = 2; // 不同的变量 
        console.log(x); // 2 
      } 
      console.log(x); // 1
    }
    

    JavaScript 引擎是如何同时支持变量提升和块级作用域的?

    变量提升是通过变量环境来实现,而块级作用域就是通过词法环境的栈结构来实现的,通过这两者的结合,JavaScript 引擎也就同时支持了变量提升和块级作用域了。

    思考题

    let myname= '极客时间'
    { 
        console.log(myname) 
        let myname= '极客邦'
    }
    

    【最终打印结果】:VM6277:3 Uncaught ReferenceError: Cannot access 'myname' before initialization
    【分析原因】:变量会经历创建、初始化、赋值3个过程。在块作用域内,let声明的变量被提升,但变量只是创建被提升,初始化并没有被提升,在初始化之前使用变量,就会形成一个暂时性死区。
    【拓展】
    var的创建和初始化被提升,赋值不会被提升。
    let的创建被提升,初始化和赋值不会被提升。
    function的创建、初始化和赋值均会被提升。

    补充

    在ES3开始,try /catch 分句结构中也具有块作用域。

    相关文章

      网友评论

          本文标题:es6加入了哪些新特性

          本文链接:https://www.haomeiwen.com/subject/vxwroltx.html