在JavaScript中无法创建多个if条件?

时间:2011-07-18 00:04:59

标签: javascript if-statement

我完全不知道为什么这不起作用。对我毫无意义。

这将返回“语法错误:解析错误”:

if ($(this).attr("id") === 'search' || opening = true) return false;

为了更好的衡量,我也尝试了以下方法,结果相同:

if (1 = 1 && 2 = 2) { return false; }

6 个答案:

答案 0 :(得分:10)

有三种不同的运营商在玩:

  • =:任务
  • ==:平等
  • ===:严格平等

= 实际修改变量,因此您不应在if语句中使用它。也就是说,您应该使用... || opening == true)代替... || opening = true)

答案 1 :(得分:7)

在JavaScript中=用于分配值,而=====用于比较它们。

当您将opening = true放入if语句时,您不会检查opening是否为true,而是将opening设置为true。请尝试使用==

例如,

var x = 5;
if (x == 10) {
    alert("x is 10");
} else {
    alert("x isn't 10");
}

将显示“x不是10”,而

var x = 5;
if (x = 10) {
    alert("x is 10");
} else {
    alert("x isn't 10");
}

将显示“x为10”。

答案 2 :(得分:1)

您的情况有错误

if ($(this).attr("id") === 'search' || opening = true) return false;

应该是

if ($(this).attr("id") === 'search' || opening == true) return false;

问题在于等号

===

不同

第一个是赋值运算符。第二个是比较

答案 3 :(得分:1)

第一个例子应该是:

if ($(this).attr("id") === 'search' || opening == true) return false;

和第二个:

if (1 == 1 && 2 == 2) { return false; }

注意逻辑等于的双等于(==)符号与处理变量赋值的单等号(=)符号不同。

答案 4 :(得分:0)

当你这样测试时:

opening=true;

您真正在做的是将opening设置为true的值。请改用==

最后,操作顺序,即使是正确的,也会让人感到困惑。在比较的每个部分周围加上括号。

if (($(this).attr("id") === 'search') || (opening == true)) return false;

答案 5 :(得分:-4)

我猜是===不存在。 ==用于测试平等

所以if ($(this).attr("id") === 'search' || opening == true) return false; 应为if ($(this).attr("id") == 'search' || opening == true) return false;