一个简单的函数声明会在JavaScript中形成一个闭包吗?

Ben*_*Ben 5 javascript

以下代码是否会形成闭包?

function f() {}
Run Code Online (Sandbox Code Playgroud)

定义此函数的位置会影响答案吗?

Guf*_*ffa 4

是的,它形成了一个闭包。

闭包是函数引用和创建函数的环境的组合。无论函数如何调用,函数中的代码始终可以访问创建函数的作用域中定义的任何变量。

例子; 即使在无法访问的范围内调用该函数,该函数f也将始终使用该变量:xx

function container() {

  var x = 42;

  function f() {
    document.write(x);
  }

  return f;

}

var func = container();
func(); // displays 42
//document.write(x); // would give an error as x is not in scope
Run Code Online (Sandbox Code Playgroud)

  • @Bergi 我将其作为答案,因为 JS VM 的内部优化在我看来不应该影响我对语言的概念理解。 (2认同)