You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何借助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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 07:24:04