有人可以彻底解释一下,为什么第三个表达式会返回NaN?
NaN || 0 // 0
parseFloat("s").toFixed() // NaN
parseFloat("s").toFixed() || 0 // NaN
答案 0 :(得分:5)
第1行:NaN是假的,因此NaN || 0
变为0
方法.toFixed
会产生一个字符串,所以
第2行:parseFloat("s")
- > NaN
(这是值 NaN
),然后是NaN.toFixed()
- > "NaN"
...因此结果是STRING“NaN”(不是NaN值)
第3行:与Line2相同,然后,作为非空字符串是“truthy”,"NaN" || 0
- > "NaN"
(注意,仍然是一个字符串)
P.S。我不认为这里有任何类型的强制行为(我可能错了)
答案 1 :(得分:1)
这是因为"NAN" || 0
而不是NAN || 0
因为parseFloat("s").toFixed
将返回"NAN"
而不是NAN