我正在为这个概念而挣扎。通过查看下面的内容,当我在控制台上键入“计数器”时,我不明白它等于下面的内容。它怎么知道要拿起这段代码呢?这是如何工作的?
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
返回一个函数,这实际上意味着一旦 counter
被 incrementer(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/