为什么我一直都是真的?
var _template_id = "";
if (_template_id != '0' || _template_id!="") {
alert("true")
}else{
alert("false")
}
或者即使我设置_template_id =“0”,它仍然是真的......
答案 0 :(得分:4)
因为您询问_template_id是否不等于“0”或者不等于“”。其中一个永远都是真的。
证明:鉴于你对(_template_id != '0' || _template_id!="")
的陈述,我们假设第一部分是假的。因此_template_id == '0'
为真,因此_template_id != ""
为真,所以整个语句的计算结果为真。
另一方面,如果第一部分是真的,那么显然整个事情再次评估为真。
因此,陈述总是如此。
答案 1 :(得分:2)
a != b || a != c
和b
不同时, c
始终为真。
你想要的是
if (!(_template_id == '0' || _template_id =="")) {
alert("true")
然后,如果您设置_template_id="0"
,则会根据需要获得false
。
答案 2 :(得分:2)
您希望&&
不是||
。
它必须始终为真,因为"0" != ""
,所以其中一个或另一个始终为真。
答案 3 :(得分:1)
你可能想要
!(_template_id == '0' || _template_id == "")
如果_template_id
既不是0
也不是''
。
这相当于(感谢De Morgan's laws):
_template_id != '0' && _template_id != ""
答案 4 :(得分:0)
您想在哪里更改_template_id的值?如果你指定“”然后询问它的'0'或“”是否为真,我将永远是真的。
答案 5 :(得分:0)
你在逻辑上是错的。 使用==和|| 要么 使用!=和&&
在两种情况下都会产生相同的结果,你的情况也是如此。