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

三元运算符条件恒返回TRUE的原因及正确实现方案

问题根因

你的三元运算符没有写有效判断逻辑:

  • 你直接把枚举成员AssociatedItemType.ExRatedTag放在了三元运算符的条件位,缺失了「待判断的业务变量 === 目标枚举值」的核心比较步骤。
  • 按照JS/TS的真值判定规则,只有false、0、空字符串""、null、undefined、NaN会被转为false,其余所有值全为真值。如果ExRatedTag是数字枚举中值不为0的成员,或是字符串枚举的非空字符串成员,它本身作为判断条件永远为真,自然永远执行第一个分支的逻辑。
  • 你测试的const ? 1 : 2永远返回1也是同理:你直接把变量/常量本身放在条件位,只要这个值不属于上面列的6个假值,判断结果永远为真,根本不会走false分支。
修复方案

三元运算符的条件位必须是能得到布尔结果的比较表达式,你需要先找到代码里存储当前关联项类型的实际变量(下文用currentType代指,替换成你代码里的真实变量名即可),明确判断该变量是否匹配目标枚举值:

currentType === AssociatedItemType.ExRatedTag
  ? session?.data.reloadRow(ids)
  : this.reloadItemRows(this.prepareItemsIdentities(ids)!)

修改后执行逻辑完全符合预期:

  • 判断结果为真(当前类型是ExRatedTag)时,执行session?.data.reloadRow(ids)
  • 判断结果为假(当前类型不是ExRatedTag)时,执行this.reloadItemRows(this.prepareItemsIdentities(ids)!)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 23:48:49