es6块作用域中的函数 - CNode技术社区

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

今天在看 你不懂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。

用严格模式再试一次?

回到顶部

AltStyle によって変換されたページ (->オリジナル) /