javascript - 闭包 : How does this specific piece work?

标签 javascript

我正在为这个概念而挣扎。通过查看下面的内容,当我在控制台上键入“计数器”时,我不明白它等于下面的内容。它怎么知道要拿起这段代码呢?这是如何工作的?

function(val) {
  count += val;
  return console.log(count);
};

代码

var incrementer = function(initialValue) {
  var count = initialValue;

  return function(val) {
    count += val;
    return console.log(count);
  };
};

var counter = incrementer(5);

counter(3);
counter(1);

最佳答案

因为 incrementer 返回一个函数,这实际上意味着一旦 counterincrementer(5) 填充,它就会成为对由 incrementer 返回的函数,这意味着计数器变量当时看起来像这样:

counter = function(val) {
    count += val;
    return console.log(count);
};

要验证这一点:

console.log(counter);

因此后续调用 counter 将增加 count 的值

注意:变量 count 存在于 incrementer 范围内,并且只能因为 counter 引用的函数是在该范围内创建的而被访问该范围。

关于javascript - 闭包 : How does this specific piece work?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23669713/

相关文章:

JavaScript 和位运算符

javascript - 如何使 $http.get 返回响应而不是 promise 对象?

javascript - 在 Chrome 开发者控制台中隐藏违规行为

javascript - 使用 js/jQuery 显示选择中特定数量的随机对象并隐藏所有其他对象?

javascript - 将自定义文本添加到 Bootstrap datetimepicker 中的输出文本字段

javascript - 在 forEach 循环中调用服务并在继续之前等待它完成

javascript - Node 快车 : Send only custom error messages

javascript - 检测用户是否已在 html 网站上参加比赛

javascript - 确定我单击了哪个表条目

javascript - 从选择中加载选项仅适用于具有类别的第一个项目