js 写定时器 多个调用 定时器函数 每个的值不被共享
时间: 2023-08-04 18:37:22 浏览: 105
如果你需要写一个定时器函数,并且希望多个调用这个函数时,它们的值不被共享,你可以使用闭包来实现。
下面是一个使用闭包的示例代码:
```
function createTimerFunction(interval) {
let count = 0;
const timer = setInterval(function() {
count++;
console.log(count);
}, interval);
return function stopTimer() {
clearInterval(timer);
}
}
const stopTimer1 = createTimerFunction(1000);
const stopTimer2 = createTimerFunction(2000);
// 等待一段时间后,分别停止两个定时器
setTimeout(function() {
stopTimer1();
stopTimer2();
}, 5000);
```
在这个例子中,我们定义了一个`createTimerFunction`函数,它返回一个内部函数`stopTimer`。每次调用`createTimerFunction`函数时,它会创建一个新的闭包,其中包含一个定时器对象和一个局部变量`count`。每次定时器触发时,`count`变量的值会自增1,并输出结果。
我们可以使用`createTimerFunction`函数创建两个不同的闭包,它们分别使用不同的时间间隔。这样,我们就可以实现多个调用同一个函数,但是它们的定时器不会相互干扰的效果。
在这个例子中,定时器对象是局部变量,因此它不会被外部的代码所访问到,也就避免了定时器对象被共享的问题。同时,由于每个闭包中都有一个独立的`count`变量,因此也避免了计数器被共享的问题。
阅读全文