在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_。