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

JavaScript中"value != value"的含义是什么?何时值不等于自身?

解读if (value != value) return true;

表达式实际含义

这行代码是判断当前值是否为NaN的经典写法。一旦value != value结果为true,就说明value是NaN,此时返回true——这对应Array.prototype.includes的逻辑:如果要查找的目标是NaN,数组只要包含NaN就应该判定为“存在匹配项”。

什么情况下value不等于自身?

在JavaScript里,**只有NaN(非数字值)**会满足value != value(包括严格不等的value !== value)。因为NaN是语言中唯一一个和任何值(包括它自己)都不相等的特殊值:

  • NaN == NaN → false
  • NaN === NaN → false

这种特性让value != value成为判断NaN最可靠的方式,比全局isNaN()更精准——isNaN()会把能被强制转换为NaN的非数字值(比如字符串'abc')也判定为NaN,但'abc' == 'abc'是true,不会触发这个条件。

结合core-js的场景

这段代码来自core-js对Array.prototype.includes的兼容实现。原生includes支持检测数组中的NaN,但旧版indexOf做不到(因为indexOf用严格相等匹配,[NaN].indexOf(NaN)会返回-1)。core-js这段代码就是处理这个特殊场景:当要查找的目标是NaN时,先标记这个状态,后续遍历数组时会专门检查元素是否为NaN,以此实现和原生includes一致的行为。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 19:01:09