我试图理解为什么比较标准函数总是返回一个布尔false
与isNaN函数类似
>isNaN === true
false
>isNaN === false
false
但是
>Boolean(isNaN)
true
现在让事情变得更有趣
>!isNaN === false
true
>!isNaN === true
false
使用标准函数(如数字,对象等)时会发生这种情况。
有谁知道JavaScript中的内幕会发生什么?
答案 0 :(得分:2)
我建议您阅读truthy and falsy值,简而言之,isNaN是一个函数,它实际上存在,因此您可以将其用作true
检查的简写,对日常编程非常有用。 / p>
当你使用===
类型检查完成,然后是bool!=一个函数。
当你预先挂起!
时,你实际上是在转换为布尔类型并将值反转为true
,这就是比较发生变化的原因。
答案 1 :(得分:1)
答案 2 :(得分:0)
>isNaN === true
false
>isNaN === false
false
因为isNaN
是一个函数。
>Boolean(isNaN)
true
因为isNaN
是一个函数,函数是真正的值。请参阅以下内容以查看output specs for Boolean