我完全不知道为什么这不起作用。对我毫无意义。
这将返回“语法错误:解析错误”:
if ($(this).attr("id") === 'search' || opening = true) return false;
为了更好的衡量,我也尝试了以下方法,结果相同:
if (1 = 1 && 2 = 2) { return false; }
答案 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;