Javascript Closures,相同的参数,但它打印出不同的答案

时间:2014-10-01 02:41:40

标签: javascript

为什么我运行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

1 个答案:

答案 0 :(得分:5)

不,因为local每次调用都会更改。

闭包的关键是捕获外部函数中的变量。