在“您不知道JS”一书中,我对isNaN polyfills有疑问

问题描述 投票:0回答:1

在Kyle Simson的书You Don't Know JS中,

您还可以通过应用NaN不等于其自身的唯一性来更简单地实现polyfill。NaN是世界上所有语言中的唯一价值,“自我以外的任何价值都永远等于您。”

函数isNaN的polyfill建议如下。

// polyfill NaN
if (!Number.isNaN) {
  Number.isNaN = function(n) {
    return n !== n;
  };
}

但是,是否总是将代码n! == n强制设为false? (实际上,使函数简单并执行它是相同的)

所以我不明白代码的含义。

如果您能解释一下,我将不胜感激。

javascript nan
1个回答
0
投票

NaN是Javascript中的only值,当与===与它自身进行比较时,会产生false(或等效地,与!==进行自身比较时,会返回true)。使用===对其自身进行检查时,其他任何值都将返回true

NaN !== NaN // true
const obj = {};
obj !== obj     // false
0 !== 0         // false
'foo' !== 'foo' // false
// etc, everything else other than NaN
// will produce: // false

所以

return n !== n;

是对n是否为NaN的可靠检查。

© www.soinside.com 2019 - 2024. All rights reserved.