我的代码基本上是这样的:
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"?
答案 0 :(得分:4)
尝试使用===
运算符,如果您打算接受虚假参数,请不要检查!var
。
https://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