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

JS中字符串比较时if-else条件不生效,需兼容IE11该如何排查?

问题根因

两个版本的代码都犯了JavaScript逻辑运算符||的用法错误:

  • Code 1的错误:destinationId == "carNumber" || "setNumber"不是判断destinationId等于两个值中的任意一个,而是会先计算destinationId == "carNumber"的结果,若结果为假,就会直接返回第二个操作数"setNumber"。非空字符串的布尔值恒为真,所以第一个if的条件永远成立,代码自然始终进入第一个分支。
  • Code 2的错误:["carNumber" || "setNumber"]会先执行||运算,"carNumber"是真值,所以运算结果就是"carNumber",最终数组实际只包含"carNumber"一个元素,完全没有实现判断destinationId匹配两个值的需求,逻辑同样错误。
兼容IE11的修复方案

IE11支持Array.indexOf(),只需要把所有待匹配的值放到同一个数组中,再用indexOf判断是否存在即可:

var fromId = "createNotification";
var destinationId ="detailedDescription";

if (fromId === "createNotification" && ["carNumber", "setNumber"].indexOf(destinationId) > -1) {
  // 第一个分支执行逻辑
} else if (fromId === "createNotification" && ["faultRepBy", "detailedDescription"].indexOf(destinationId) > -1) {
  // 第二个分支执行逻辑
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 07:15:04