首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于Number.isNaN的困惑

关于Number.isNaN的困惑
EN

Stack Overflow用户
提问于 2020-03-29 01:35:24
回答 4查看 74关注 0票数 0

我正在使用Eloquent Javascript学习Javascript。

在第二章中,有一段代码:

代码语言:javascript
复制
let theNumber = Number(prompt("Pick a number"));
if (!Number.isNaN(theNumber)) {
  console.log("Your number is the square root of " +
              theNumber * theNumber);
}

我试图理解Number.isNaN方法,并查看了有关它的W3schools,我得到了这些示例:

代码语言:javascript
复制
Number.isNaN(123) //false
Number.isNaN(-1.23) //false
Number.isNaN(5-2) //false
Number.isNaN(0) //false
Number.isNaN('123') //false
Number.isNaN('Hello') //false
Number.isNaN('2005/12/12') //false
Number.isNaN('') //false
Number.isNaN(true) //false
Number.isNaN(undefined) //false
Number.isNaN('NaN') //false
Number.isNaN(NaN) //true
Number.isNaN(0 / 0) //true

关于这个例子,我不明白的是"Hello“不是一个数字,为什么它返回false。

因此,如果Number.isNaN( 'Hello‘)返回false,对上面的提示应用’Hello‘,它将为此(!Number.isNaN(theNumber))返回true,然后它将执行以下操作

代码语言:javascript
复制
console.log("Your number is the square root of " + theNumber * theNumber);

“你好”*“你好”??

我很困惑..。

EN

回答 4

Stack Overflow用户

发布于 2020-03-29 01:38:33

有两个.isNaN()函数:一个在全局范围内,另一个是Number的属性。全局isNaN()首先将其参数强制为一个数字,然后检查它是否为NaN值。但是,Number.isNaN()不执行类型强制。因此,'Hello'不是NaN,因为它不是;它是字符串'Hello'。只有实际的数字NaN才会从Number.isNaN()返回true。

请注意,令人困惑的是,虽然NaN的意思是“不是数字”,但它并不是JavaScript数据类型意义上的数字。它是浮点数字系统的一部分,这意味着位模式不符合数字表示的标准规则。它不会给出问题的答案,因此,“任何不是数字的东西”。

票数 1
EN

Stack Overflow用户

发布于 2020-03-29 01:40:09

如果值为NaN,则isNaN仅检查。如果你尝试Number(+"Hello"),它将返回true。所以这里的+符号尝试将"Hello“转换为number,但失败并返回NAN。

票数 0
EN

Stack Overflow用户

发布于 2020-03-29 01:46:48

NaN是Number类型的特殊值。Number.isNaN的版本检查传递值是否真的是'NaN‘(number类型,并且是NaN),而不是任何不是A Number的值,全局的'isNaN’会这样做。

它类似于Number.isTwo(a) (如果它存在),如果a恰好是2,则返回'true‘。

只有当a恰好为NaN时,Number.isNaN(a)才返回true。

代码语言:javascript
复制
Number.isNaN(NaN) -> return true
Number.isNaN(!'Hello') -> return true because !'Hello' returns NaN

看看下面的Number.isNaN实现,它可以很好地解释:

代码语言:javascript
复制
function isNaN(input) {
    return typeof input === 'number' && input !== input;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60904434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档