es6块作用域中的函数
发布于 7 年前 作者 TalkWIthKeyboard 3248 次浏览 来自 问答

今天在看 你不懂JS 的时候,出现了一个疑问:

  • 块中的函数作用域到底在哪里?
    • 书中说块中的函数作用域仅属于块中

      {
          foo();                    // 好用!
      
          function foo() {
              // ..
          }
      }
      
      foo();                        // ReferenceError
      
    • 我马上试了一下,发现并不是如此

      {
        foo(2, 3);
        function foo(a, b) {
          console.log(a, b);
        }
      }
      
      foo(1, 2);
      
      // 2 3
      // 1 2
      
    在块外,我一样能够访问。所以块中的函数也会被提升到全局吗?
3 回复

我的理解是js是没有块级作用域的,es6的块级作用域只是针对let 和const声明的变量或函数

@lastIndexOf 对的,这样解释非常nice。

用严格模式再试一次?

回到顶部