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

时间:2014-07-01 07:19:09

标签: 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' : 'false') 

返回false

任何人都可以解释为什么会这样吗?

4 个答案:

答案 0 :(得分:4)

根据ECMA-262 §11.12使用条件运算符? :时,第一个操作数(在您的情况下是NumberparseInt返回的parseFloat )被转换为Boolean

转换符合ECMA-262 §9.2,即

  

Number - 如果参数为+ 0,-0或NaN,则结果为false;否则结果是真的。

这就是为什么你的表达式562的evalute为true,而0的表达式为evalute为假。

答案 1 :(得分:1)

它不返回布尔值假它在三元运算符中返回数字0 与0比较。 0表示错误

答案 2 :(得分:0)

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

答案 3 :(得分:0)

0和1是布尔值。 http://en.wikipedia.org/wiki/Boolean

console.log((true)+0); // 1
console.log((false)+0); // 0

零是唯一返回false的数字。

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