在解析输入时,我遇到了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
任何人都可以解释为什么会这样吗?
答案 0 :(得分:4)
根据ECMA-262 §11.12使用条件运算符? :
时,第一个操作数(在您的情况下是Number
或parseInt
返回的parseFloat
)被转换为Boolean
。
转换符合ECMA-262 §9.2,即
Number - 如果参数为+ 0,-0或NaN,则结果为false;否则结果是真的。
这就是为什么你的表达式562的evalute为true,而0的表达式为evalute为假。
答案 1 :(得分:1)
它不返回
答案 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