美文网首页
ES6 块级上下文

ES6 块级上下文

作者: maomizone | 来源:发表于2022-04-15 15:32 被阅读0次

除了函数和对象的大括号外,如[判断体/循环体/代码块...],如果大括号中出现了let/const/function/class等关键词声明变量,则当前大括号会产生一个块级私有上下文,它的上级上下文是所处的环境

    // @1 产生EC(G)
    // @2 函数声明提升:不论条件是否成立,判断体中的function会进行函数声明提升,但是只声明不定义[function foo],GO上有个foo 
    // @3 执行代码
    console.log(foo) // undefined

    if (1 === 1) {
      // @1 执行代码时,判断体中遇到let/const/function/class会形成块级私有执行上下文 EC(BLOCK)
      // @2 函数声明提升 function foo() { }, VO(BLOCK)上有个变量foo->0x001
      // @3 执行代码
      console.log(foo) // foo(){}
      function foo() { } // 按照道理讲已经在函数声明提升阶段处理过了,会跳过处理,但是这边需要同步给EC(G),GO的foo->0x001,而此行代码之后的代码和EC(G)无关
      foo = 1 //  VO(BLOCK)上有个变量foo->1
      console.log(foo) // 1
      
      // 块级执行上下文没有自己的this,所以它是找的外层this
      console.log(this); // window
    }
    console.log(foo) // foo(){}

相关文章

  • ES6 块级上下文

    除了函数和对象的大括号外,如[判断体/循环体/代码块...],如果大括号中出现了let/const/functio...

  • 块级绑定

    因为ES6之前存在变量提升问题,容易造成问题,ES6引入了块级作用域。 块级声明 块级作用域在函数或者块({})中...

  • ES6分享会总结

    学到的内容 ES6的块级作用域 1. 块级作用域的概念 2. ES6允许在块级作用域内声明函数 3. 函数在块级作...

  • ES6块级作用域与ES5立即执行函数对比

    ES6有了块级作用域;在ES5时,采用立即执行函数实现块级作用域。 ES6: ES5:

  • let 和 const

    一、JS中的块级作用域 ES6之前JS不支持块级作用域在ES6之前,JS是没有块级作用域这个概念的,只有全局作用域...

  • 块级作用域

    Q:js有木有块级作用域 A:js里面的块级作用域也是在ES6里面引入的,那么,什么又是ES6呢?ES6是ECMA...

  • BFC

    block formatting context 块级格式化上下文 浮动元素,绝对定位元素,非块级盒子的块级容器(...

  • ECMAScript 6 知识总结(一、ES6与ES5对比)

    ECMAScript 6 知识总结 一、ES6改良ES5的缺陷 ES6新增块级作用域**在块级作用域内声明的变量不...

  • js 作用域链 和 原型链

    作用域链 js拥有全局作用域(window)、函数作用域、块级作用域(es6)。块级作用域是es6开始才拥有的,因...

  • 学习BFC格式化上下文笔记

    BFC格式化上下文 块级格式化上下文(Block Fromatting Context)是按照块级盒子布局的。 B...

网友评论

      本文标题:ES6 块级上下文

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