我遇到了这个问题,但不知怎的我无法解决它。我需要我的函数来打印 counter1 (1, 2, 3),然后我需要 counter2 从零开始计数,而不是继续 counter1。 (counter1 和 counter2 异步递增) 我需要打印计数如下:1,2,3,1,2,3。
function ukol2() {
var count = 0;
function makeCounter() {
return function() {
count++;
console.log(count);
};
}
var counter1 = makeCounter();
counter1(); //1
counter1(); //2
counter1(); //3
var counter2 = makeCounter();
counter2(); //4
counter2(); //5
counter2(); //6
}
最佳答案
您的 count
变量是全局变量,请将其放入您的函数 makeCounter
中。
function ukol2() {
function makeCounter() {
let count = 0;
return function() {
count++;
console.log(count);
};
}
var counter1 = makeCounter();
counter1(); //1
counter1(); //2
counter1(); //3
var counter2 = makeCounter();
counter2(); //4
counter2(); //5
counter2(); //6
}
ukol2();
看到了吗?现在您的计数器独立递增。
更新:根据 @DiamondDrake 的建议:
将此 var count = 0;
更改为 let count = 0;
以进行范围界定
资源
The let statement declares a block scope local variable, optionally initializing it to a value.
关于Javascript 两个不同的计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48507707/