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

如何简化判断a、b为0与±Infinity组合的JavaScript条件表达式?

条件判断简化方案

原逻辑本质是判断「两个数中恰好一个为0,另一个为正负无穷」的场景,以下是几种无需使用isFinite的简化方案:

  • 方案1:利用NaN不等于自身的特性精简(代码最短)
    所有符合原判断的场景,0和无穷相乘都会得到NaN,结合非0的场景提前过滤,代码如下:
if ((a === 0 || b === 0) && (a * b !== a * b)) {
    return NaN
}
  • 方案2:提取公共判断项压缩(无额外依赖,性能和原逻辑完全一致)
    将原逻辑的4个分支合并为两类公共场景,可读性更强,代码量比原写法减少40%:
if ((a === Infinity || a === -Infinity) && b === 0 || (b === Infinity || b === -Infinity) && a === 0) {
    return NaN
}
  • 方案3:借助Math.abs进一步精简(可读性最高,仅需允许使用Math内置方法)
    用绝对值判断统一正负无穷的判定,逻辑更清晰:
if ((Math.abs(a) === Infinity && b === 0) || (Math.abs(b) === Infinity && a === 0)) {
    return NaN
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 13:24:03