Javascript 为什么isNaN(true)(或(isNaN(false))返回false?

Javascript 为什么isNaN(true)(或(isNaN(false))返回false?,javascript,Javascript,只是一个简单的问题 为什么会这样: isNaN(真) 或者这个: isNaN(假) 返回false 我可以理解,false的计算结果是0,而true的计算结果是1或其他什么 但是,isNaN(…)的目的不是仅当变量或值“恰好”是一个数字时才返回false吗?正如您所想,它们返回false,因为isNaN首先将其参数强制为一个数字,然后返回参数是否为NaN Number(true)是1,Number(false)是0,因此两者都不是NaN 要执行更严格的检查并避免隐式强制,请调用: Number.

只是一个简单的问题

为什么会这样:
isNaN(真)
或者这个:
isNaN(假)
返回
false

我可以理解,
false
的计算结果是
0
,而
true
的计算结果是
1
或其他什么


但是,
isNaN(…)
的目的不是仅当变量或值“恰好”是一个数字时才返回false吗?

正如您所想,它们返回false,因为
isNaN
首先将其参数强制为一个数字,然后返回参数是否为NaN

Number(true)
1
Number(false)
0
,因此两者都不是NaN

要执行更严格的检查并避免隐式强制,请调用:


Number.isNaN(true)
Number.isNaN(false)
返回
true

isNaN仅当值不是数字时返回true“函数应解释为回答以下问题:“当强制为数值时,该值是否为IEEE-754‘不是数字’值?”也就是说,基本值仍然是一个数字,0或1。虽然问题略有不同,但“为什么思考
isNaN
isNumeric
函数的合适替代品”的答案是不正确的。