Javascript:比较标准函数总是返回* false *

时间:2017-02-01 06:30:15

标签: javascript nan

我试图理解为什么比较标准函数总是返回一个布尔false

与isNaN函数类似

>isNaN === true
false 
>isNaN === false
false

但是

>Boolean(isNaN)
true

现在让事情变得更有趣

>!isNaN === false
true
>!isNaN === true
false

使用标准函数(如数字,对象等)时会发生这种情况。

有谁知道JavaScript中的内幕会发生什么?

3 个答案:

答案 0 :(得分:2)

我建议您阅读truthy and falsy值,简而言之,isNaN是一个函数,它实际上存在,因此您可以将其用作true检查的简写,对日常编程非常有用。 / p>

当你使用===类型检查完成,然后是bool!=一个函数。

当你预先挂起!时,你实际上是在转换为布尔类型并将值反转为true,这就是比较发生变化的原因。

答案 1 :(得分:1)

以下是TruthyFalsy值的列表。

isNaN是真实的,因为它是一种功能。

答案 2 :(得分:0)

>isNaN === true
false 
>isNaN === false
false

因为isNaN是一个函数。

>Boolean(isNaN)
true

因为isNaN是一个函数,函数是真正的值。请参阅以下内容以查看output specs for Boolean