谁能解释清楚,为什么第三个表达式返回NaN?
NaN || 0 // 0
parseFloat("s").toFixed() // NaN
parseFloat("s").toFixed() || 0 // NaN
第一行:NaN为假,因此NaN || 0
为0
方法.toFixed
的结果是一个字符串,所以
第2行:parseFloat("s")
-> NaN
(这是值 NaN
),然后NaN.toFixed()
-> "NaN"
…因此结果是字符串"NaN"(而不是值NaN)
第3行:与第2行相同,那么,作为非空字符串是" true ", "NaN" || 0
-> "NaN"
(注意,仍然是字符串)
注:我不认为这里有任何类型强制转换(虽然我可能错了)
这是因为您得到"NAN" || 0
而不是NAN || 0
,因为parseFloat("s").toFixed
将返回"NAN"
而不是NAN