makeCounter() 的结果价值是什么?

3
const result的值是什么?我的猜测是(3, 1)。这让我很困惑,希望得到帮助。

    function makeCounter() {
      let count = 0;
      return function() {
        count += 1;
        return count;
      }
    }
    const counter1 = makeCounter();
    const counter2 = makeCounter();
    counter1();
    counter1();
    
    const c1 = counter1();
    const c2 = counter2();
    const result = [c1,c2];
    console.log(result)

1个回答

1
是的,[3, 1] 是正确的。(您可以选择“运行代码片段”来查看它的执行情况)。
原因在于调用 makeCounter() 返回一个函数,其中一个本地的count变量初始化为零。
每次调用由makeCounter()返回的函数(即counter1counter2)时,该计数器的count会递增。 counter1()被调用了3次,而counter2()只被调用了一次。最后将它们放在一个数组中,因此得到了[3, 1]。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接