小编Coo*_*Guy的帖子

JavaScript闭包混乱

→jsFiddle

function f1(){
    var n=999;

    nAdd=function(){n+=1;};

    function f2(){
        alert(n);
    }
    return f2;
}

var result = f1();
var result2 = f1();

result();  // 999
nAdd();
result2(); // 1000
result2(); // 1000
result();  // 999
Run Code Online (Sandbox Code Playgroud)

我正在尝试学习JavaScript闭包,但上面的代码让我感到困惑.当第一次result()被叫时,它是999.这对我来说没问题.

之后nAdd()被调用,result2()显示1000我认为这是由于功能result2()和作用result()是等于功能f1().

但为什么最后一次result()显示999而不是1000呢?

javascript closures

34
推荐指数
3
解决办法
1466
查看次数

标签 统计

closures ×1

javascript ×1