Javascript类型强制使用parseFloat()。toFixed()?

时间:2015-08-26 11:21:38

标签: javascript

有人可以彻底解释一下,为什么第三个表达式会返回NaN?

NaN || 0 // 0 
parseFloat("s").toFixed() // NaN 
parseFloat("s").toFixed() || 0 // NaN

2 个答案:

答案 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