使用闭包跟踪上一个函数调用的状态

时间:2018-10-01 21:23:20

标签: javascript

我在一次采访中遇到了这个问题,我想不通。

预期输出为:

1

2

3

4

代码:

for(var i =0; i< 4; i++){
    console.log(next());
}

问题是要实现功能next(); 面试官最后给了我答案,但我不记得了。我不知道next()如何找出上一个next()调用的更早状态; 我记得解决方案是返回一个函数,并使用闭包,但是当再次调用next()时,这如何帮助我跟踪计数器。

他还说,您不必在乎每次迭代中我是什么

1 个答案:

答案 0 :(得分:0)

var next = (function () {
  var num = 0;
  
  return function() {
    num += 1;
    return num
  }
})()

for(var i =0; i< 4; i++){
    console.log(next());
}

closure magic