Javascript 为什么parseFloat(';0.0';)或parseInt(';0.0)返回false
在解析输入时,我遇到了javascript的这种行为 如果你解析一个数字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
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