js闭包问题?这段代码如何理解呢?为什么第二次调用result()变成1000了?

javascript闭包相关问题?为什么第二次调用result()变成1000了?
第二次调用result的时候还是会走var n=999;那输出的值为什么不是999?

function f1(){

    var n=999;

    nAdd=function(){n+=1}

    function f2(){

      alert(n);

    }

    return f2;

  }

  var result=f1();

  result(); // 999

  nAdd();

result(); // 1000

回答

你运行了nAdd()这个函数,执行了n+=1,所以结果打印出1000

第二次调用result的时候还是会走var n=999;

var n=999 是不会执行第二次的.

result是f2函数,第二次调不会执行var n=999

image.png
在这个位置看下result变成了什么。

result=f1();//这里已经给result重新赋值,值为f1()返回的结果,就是函数f2;

// 所有这时候result = function(){alert(n)};

//后面再怎么执行result,也不会重新var n;

以上是 js闭包问题?这段代码如何理解呢?为什么第二次调用result()变成1000了? 的全部内容, 来源链接: utcz.com/a/24954.html

回到顶部