Javascript 为什么parseFloat(';0.0';)或parseInt(';0.0)返回false

Javascript 为什么parseFloat(';0.0';)或parseInt(';0.0)返回false,javascript,Javascript,在解析输入时,我遇到了javascript的这种行为 如果你解析一个数字 console.log(parseFloat('562.0') ? 'true' : 'false') console.log(parseInt('562') ? 'true' : 'false') 它返回true,但如果我分析0 console.log(parseFloat('0.00') ? 'true' : 'false') console.log(parseInt('0') ? 'true' : 'fals

在解析输入时,我遇到了javascript的这种行为

如果你解析一个数字

console.log(parseFloat('562.0') ? 'true' : 'false') 
console.log(parseInt('562') ? 'true' : 'false') 
它返回true,但如果我分析0

console.log(parseFloat('0.00') ? 'true' : 'false') 
console.log(parseInt('0') ? 'true' : 'false') 
它返回false


有人能解释一下为什么会发生这种情况吗?

它在三元运算符中返回布尔值false它返回数字0,与0进行比较0为假

实际上它返回0。但是,在javascript中,零表示false。

0和1是布尔值

零是唯一返回false的数字

console.log((1) ? "true" : "false"); //true
console.log((0) ? "true" : "false"); //false

使用条件运算符
时:
,根据,第一个操作数(在您的例子中,它是由
parseInt
parseFloat
返回的
数字)被转换为
布尔值

转换是根据

Number-如果参数为+0,则结果为false,−0,或NaN;否则,结果是正确的


这就是562 evalute为true的表达式和0 evalute为false的表达式的原因。

两者都将返回0,这在某种程度上相当于false(编程基础)@Justinas:说
ToBoolean(0)==false更为正确。因为即使
“==false
ToBoolean(“”==true
)。我知道。。。吹毛求疵;)@php中的FelixKling:
$a='5.something';in_数组($a,[5,1,1.nothing'])
将返回true,因此可以使许多表达式等于false。这只是基本的评论。谢谢你的回答。如果我们有非数字值,parseFloat返回false,我在那一行思考并感到困惑。版主可以删除这个问题,因为我认为它不符合stackoverflow标准。
console.log((1) ? "true" : "false"); //true
console.log((0) ? "true" : "false"); //false