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

Javascript: Comparing standard functions always returns *false*

我试图理解为什么比较标准函数总是 returns 布尔值 false

类似于 isNaN 函数

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

但是

>Boolean(isNaN)
true

现在让事情变得更有趣一点

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

这发生在标准函数中,例如 Number、Object 等。

有谁知道 JavaScript 中发生了什么?

我推荐你阅读truthy and falsy值,简而言之,isNaN是一个函数,它是真实存在的,所以你可以用它作为true检查的简写,对日常编程非常有用.

当您使用 === 时,类型检查完成,然后是 bool != 函数。

当您 pre-pend ! 时,您实际上是在转换为布尔类型并将值反转为 true,这就是比较发生变化的原因。

这是 Truthy and Falsy 个值的列表。

isNaN 为真,因为它是一个函数。

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

因为isNaN是一个函数。


>Boolean(isNaN)
true

因为 isNaN 是一个函数,函数是真值。请参考以下查看output specs for Boolean