JavaScript 闭包

标签 javascript scope closures

我有一个关于 Javascript 闭包的简单问题:

给出了以下函数:

function outside() {
  var out = 0;
    function inside() {
    out +=1;
    }
  return inside;
} 

var ref = outside();
ref();  
ref();

如果我调用该函数两次,out等于 2。

为什么是out没有被语句覆盖?

var out = 0;

最佳答案

语句 var out = 0 不在 outside() 返回的函数内部。它仅在您调用 outside() 时运行,而不是在您调用 ref() 时运行(与 inside() 相同)。

关于JavaScript 闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25344420/

相关文章:

javascript - 使用 jQuery 在另一个 div 中克隆一个 div

javascript - 在 HTML 中使用数组命名输入字段时——如何计算数组长度?

javascript - 如何在 JavaScript 中使用两个数组创建对象文字数组

c++ - C++ 中的作用域和返回值

常规 : Closures or Methods

c++ - 为什么这个 C++11 lambda 的行为不像我预期的那样?

javascript - 使用 cypress 获取数组的索引会返回 "-1"

c# - 存储库类可以在 ASP.NET 中限定为单例吗

javascript - 如何在javascript中将变量传递给对象内的其他函数

python - exec 不从闭包中获取变量