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

使用parseFloat()进行Javascript类型强制。toFixed()?,javascript,Javascript,有人能彻底解释一下,为什么第三个表达式返回NaN NaN || 0 // 0 parseFloat("s").toFixed() // NaN parseFloat("s").toFixed() || 0 // NaN 第1行:NaN为假,因此NaN | | 0变为0 方法.toFixed产生一个字符串,因此 第2行:parseFloat(“s”)->NaN(这是值NaN),然后NaN.toFixed()->“NaN”。。。因此,结果是字符串“NaN”(不是值NaN) 第3行:与第2行相同

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

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

第1行:NaN为假,因此
NaN | | 0
变为0

方法
.toFixed
产生一个字符串,因此

第2行:
parseFloat(“s”)
->
NaN
(这是
NaN
),然后
NaN.toFixed()
->
“NaN”
。。。因此,结果是字符串“NaN”(不是值NaN)

第3行:与第2行相同,因此,由于非空字符串为“truthy”,
“NaN”| 0
->
“NaN”
(注意,仍然是字符串)


另外,我不认为这里有任何类型的强制(尽管我可能错了)

第1行:NaN是错误的,因此
NaN | | 0
变成了0

方法
.toFixed
产生一个字符串,因此

第2行:
parseFloat(“s”)
->
NaN
(这是
NaN
),然后
NaN.toFixed()
->
“NaN”
。。。因此,结果是字符串“NaN”(不是值NaN)

第3行:与第2行相同,因此,由于非空字符串为“truthy”,
“NaN”| 0
->
“NaN”
(注意,仍然是字符串)


另外,我不认为这里有任何类型的强制(尽管我可能错了)

这是因为你得到了
“NAN”| | 0
而不是
NAN | | 0
作为
parseFloat(“S”)。toFixed
将返回
“NAN”
而不是
NAN
这是因为你得到了
“NAN”| | 0
not
NAN | | 0
as
parseFloat(“s”)。toFixed
将返回
“NAN”
not
NAN

parseFloat('s')
实际上返回
NaN
而不是
“NaN”
parseFloat('s')
实际上返回
NaN
而不是
“NaN”
你说得很清楚,这里的关键点是。toFixed返回一个字符串而不是数字,即使它处理的是一个有效的浮点数,对吗?有点
.toFixed
是javascript
Number
对象的一种方法,它返回一个
字符串
NaN
(尽管不是数字)是一个javascript
数字
,因此,toFixed返回一个
字符串
。。。哦,是的,toFixed总是返回一个
字符串
你说得很清楚,这里的关键点是。toFixed返回一个字符串而不是数字,即使它处理的是一个有效的浮点数,对吗?有点
.toFixed
是javascript
Number
对象的一种方法,它返回一个
字符串
NaN
(尽管不是数字)是一个javascript
数字
,因此,toFixed返回一个
字符串
。。。哦,是的,toFixed总是返回一个
字符串