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
,这就是比较发生变化的原因。
isNaN 为真,因为它是一个函数。
>isNaN === true
false
>isNaN === false
false
因为isNaN
是一个函数。
>Boolean(isNaN)
true
因为 isNaN
是一个函数,函数是真值。请参考以下查看output specs for Boolean
我试图理解为什么比较标准函数总是 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
,这就是比较发生变化的原因。
isNaN 为真,因为它是一个函数。
>isNaN === true
false
>isNaN === false
false
因为isNaN
是一个函数。
>Boolean(isNaN)
true
因为 isNaN
是一个函数,函数是真值。请参考以下查看output specs for Boolean