当我运行 console.log(action(8)) 两次时,为什么它给出的答案是 1108 和 2108? 不应该是1108和1108吗?
var counter = 100; //line 1
function make(){
var local = 1000;
return function(x){
temp = local;
local *= 2;
return x + counter + temp;
}
}
var action = make();
console.log(action(8)); // 1108
console.log(action(8)); // 2108
最佳答案
不,因为 local
每次调用时都会发生变化。
闭包的重点是捕获外部函数中的变量。
关于Javascript 闭包,相同的参数,但打印出不同的答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26133326/