2

为什么我总是变得真实?

var _template_id = "";
if (_template_id != '0' || _template_id!="")  {
        alert("true")
}else{
    alert("false")
}

或者即使我设置 _template_id="0",结果仍然是真的......

4

6 回答 6

4

Because you're asking if _template_id isn't equal to "0" OR isn't equal to "". One of those will always be true.

Proof: Given your statement of (_template_id != '0' || _template_id!=""), let's suppose that the first part is false. Therefore _template_id == '0' is true, and hence _template_id != "" is true, so overall the statement evaluates to true.

If, on the other hand, the first part is true, then clearly the whole thing evaluates to true again.

Therefore, the statement is always true.

于 2013-09-12T19:08:18.417 回答
2

You want && not ||.

It must always be true because "0" != "", so one or the other is always true.

于 2013-09-12T19:08:15.550 回答
2

a != b || a != cb当和不同时总是正确c的。

您在这里想要的可能是使用

if (!(_template_id == '0' || _template_id ==""))  {
    alert("true")

然后,如果您设置 _template_id="0",您将获得false所需的结果。

于 2013-09-12T19:07:47.770 回答
1

你可能想要

!(_template_id == '0' || _template_id == "")

如果_template_id既不是0也不''

这相当于(由于德摩根定律):

_template_id != '0' && _template_id != ""
于 2013-09-12T19:10:48.023 回答
0

Where are you trying to change the value of _template_id ? I will always be true if you assign "" and then ask if its '0' or "" then true.

于 2013-09-12T19:09:15.217 回答
0

你在逻辑上是错误的。要么使用 == 和 ¦¦ 要么使用 != 和 &&

在这两种情况下都会产生相同的结果,并且您的情况也将是正确的。

于 2013-09-12T19:14:29.300 回答