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

JavaScript IF判断新增ignorebid等参数后无法触发restart问题

问题原因
  • 核心错误是判断条件中误用了赋值运算符= 代替全等比较运算符===:ignorebid = false、ignoreask = false这两处写法的作用是给变量重新赋值为false,而非判断变量是否等于false。
  • 赋值表达式的返回值为被赋予的值,因此这两个子表达式的返回值永远是false,逻辑与&&运算只要存在一个子项为false,整体条件就为false,因此永远不会触发restart()执行。
  • 补充一个潜在隐患:用JSON.stringify比对对象存在边界问题,比如对象属性顺序不同时会导致比对结果误判,不过该问题不是本次故障的直接诱因。
修复方案

把判断条件里的赋值运算符替换为全等比较运算符即可,修复后的代码如下:

function checker(){
  var newconfig = JSON.parse(fs.readFileSync('configs/' + config_pair + '.json'));
  // 将赋值符=替换为全等比较符===做值判断
  if ((JSON.stringify(newconfig) !== JSON.stringify(config)) && (ignorebid === false) && (ignoreask === false)) {
    restart()
  }
  setTimeout(function() {checker();}, 3000);
}

如果业务逻辑允许两个参数为falsy值(比如undefined、0、空字符串等)时也符合触发条件,也可以简化写为!ignorebid && !ignoreask。

内容的提问来源于stack exchange,提问作者Alexey

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 09:12:04