var started = false;
function start() {
var timer;
if(started === false) {
timer = setInterval(decrease, 1000);
started = true;
} else {
clearInterval(timer);
console.log("Should Clear");
}
}
setInterval可以工作,但是当我再次运行该函数时,它会在控制台中打印出它应该删除的内容。但事实并非如此。
答案 0 :(得分:1)
timer
时 start
都会重新初始化,所以第二次调用它时,它不会指向要清除的计时器ID。
答案 1 :(得分:1)
timer
在您的函数中声明,因此当您再次调用它时,它是一个新实例。
尝试在函数外声明它,如下所示:
var started = false;
var timer;
function start() {
if(started === false) {
timer = setInterval(decrease, 1000);
started = true;
} else {
clearInterval(timer);
console.log("Should Clear");
}
}
答案 2 :(得分:1)
像这样使用
var started = false;
var timer;
function start() {
if(started === false) {
timer = setInterval(decrease, 1000);
started = true;
} else {
clearInterval(timer);
console.log("Should Clear");
}
}
答案 3 :(得分:0)
因为timer
在函数范围内。因此,当您第二次调用它时,它位于另一个范围内。