【问题标题】:In the book 'You Don't Know JS', I have a question about isNaN polyfills [duplicate]在“你不知道 JS”一书中,我有一个关于 isNaN polyfills 的问题 [重复]
【发布时间】:2020-07-12 19:55:40
【问题描述】:

在凯尔·西姆森的书中You Don't Know JS

您还可以通过应用 NaN 不等于自身的唯一性来更简单地实现 polyfill。 NaN是世界上所有语言中唯一的值“除了self之外的任何值总是等于你。”

isNaN函数的polyfill建议如下。

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

但是,代码n! == n 是否总是强制为false? (其实我把函数做简单执行的时候也是这样)

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

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

【问题讨论】:

  • @UtsavPatel 哦,这不是我的问题,但我会读!感谢您的信息
  • 我知道,但是该链接上有答案可以回答您的问题。
  • "但是,n! == n 的代码是否总是被强制为false" 但这不是您上面的代码! n !== n - 检查n 是否不等于n。但是,n! == n 检查 not n 是否等于 n
  • @Dominic 哦谢谢!!

标签: javascript nan


【解决方案1】:

NaN 是 Javascript 中的 only 值,当与 === 与自身进行比较时,将产生 false(或者,当与 !== 与自身进行比较时,返回 @ 987654325@)。任何其他值,当使用=== 对其自身进行检查时,将返回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的可靠检查。

【讨论】:

    猜你喜欢
    • 2021-08-30
    • 2011-01-02
    • 1970-01-01
    • 2020-01-27
    • 2023-03-29
    • 2020-11-28
    • 1970-01-01
    • 2021-10-29
    • 1970-01-01
    相关资源
    最近更新 更多