如果条件在值为零时解析为真

时间:2017-09-01 13:52:06

标签: javascript

我的代码基本上是这样的:

console.log(placeCost) //this returns 0 (the number, not string)
 if (!placeCost || placeCost == false || placeCost == "undefined" || placeCost == '') {
 console.log("no")
             }
else {console.log('yes')}

结果是"否"在控制台中。为什么这会解决为" true"?

3 个答案:

答案 0 :(得分:4)

尝试使用===运算符,如果您打算接受虚假参数,请不要检查!varhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness

if (placeCost === false || placeCost === "undefined" || placeCost === '') {
    console.log("no")
} else {
    console.log('yes')
}

答案 1 :(得分:2)

您可以参考comparison operators

  

平等(==)

     

等于运算符==转换操作数,如果它们不是   相同的类型,然后应用严格的比较。

如果!placeCost placeCost == false号为true,则placeCost(如其更详细的形式:0)将被评估为0转换为false值。

您想要进行严格的比较吗? 使用不执行转换的===

  

如果操作数严格相等,则identity运算符返回true   (见上文)没有类型转换。

答案 2 :(得分:0)

如果placeCost为0 然后!placeCost变为1,这将导致条件成立。

if (!placeCost) // condition true when placeCost is 0