在"You Don't Know JS"一书中,我有一个关于isNaN polyfills的问题。



在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?(事实上,当我简化功能并执行它时也是一样的(

所以我不明白这个代码是什么意思。

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

NaN是Javascript中唯一的值,当将其与===进行比较时,会产生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;

是对CCD_ 11是否为CCD_。

相关内容

最新更新