如何借助JavaScript的setInterval()实现简单的切换输出操作
问题修复方案
现有代码的问题:
- 变量
b的作用域错误:let b = true声明在定时器回调函数内部,每次回调执行都会重新初始化b为true,翻转操作仅作用于当前回调的临时变量,无法影响下一次执行,所以永远只会输出hi - 定时器清除逻辑错误:
clearTimeout是用来清理setTimeout创建的延时任务的,清理setInterval定时器需要使用clearInterval;且你直接同步执行清除代码,不会等待10秒,定时器刚创建就会被清理。
修正后代码:
// 将状态变量声明在回调外部,每次回调复用同一个变量 let b = true const fnInterval = setInterval(function() { if (b) { console.log("hi") } else { console.log("bye") } b = !b }, 1000) // 10秒后再清除定时器,使用匹配的clearInterval方法 setTimeout(function() { clearInterval(fnInterval) }, 10000)
内容的提问来源于stack exchange,提问作者jumosbro
相关产品推荐
相关产品推荐

