JavaScript中唯一不等于自身的值是什么?

NaN(非数字)是JavaScript中唯一一个在与任何比较运算符进行比较时不等于自身的值。NaN通常是无意义或无效的数学计算的结果,因此两个NaN值被认为是不相等的是合理的。

const x = Math.sqrt(-1); // NaN
const y = 0 / 0;         // NaN

x === y;                 // false
x === NaN;               // false

Number.isNaN(x);         // true
Number.isNaN(y);         // true

isNaN(x);                // true
isNan('hello');          // true

你可以使用Number.isNaN()函数来检查NaN值。请注意,这与原始的全局isNaN()函数不同。它们的区别在于isNaN()会强制将其参数转换为数字,而Number.isNaN()则不会。这就是为什么在大多数情况下,Number.isNaN()被认为更健壮和更可取的原因。