无法在JavaScript中生成多个if条件?
我完全不知道这为什么不起作用。对我来说毫无意义 这将返回语法错误:解析错误:无法在JavaScript中生成多个if条件?,javascript,if-statement,Javascript,If Statement,我完全不知道这为什么不起作用。对我来说毫无意义 这将返回语法错误:解析错误: if ($(this).attr("id") === 'search' || opening = true) return false; 为了更好地衡量,我还尝试了以下方法,得到了相同的结果: if (1 = 1 && 2 = 2) { return false; } 在JavaScript中,=用于赋值,而==和===用于比较它们 当您在if语句中输入opening=true时,您并没有检查ope
if ($(this).attr("id") === 'search' || opening = true) return false;
为了更好地衡量,我还尝试了以下方法,得到了相同的结果:
if (1 = 1 && 2 = 2) { return false; }
在JavaScript中,=用于赋值,而==和===用于比较它们
当您在if语句中输入opening=true时,您并没有检查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。您的状况有错误
if ($(this).attr("id") === 'search' || opening = true) return false;
应该是
if ($(this).attr("id") === 'search' || opening == true) return false;
问题在于等号
=不同于==
第一个是赋值运算符。第二个是用于比较的有三个不同的操作符在起作用: =:分配 ==:相等 ==:严格相等
=实际修改变量,因此不应在if语句中使用它。也就是说,你应该使用…||期初==真,而不是…||打开=真。第一个示例应为:
if ($(this).attr("id") === 'search' || opening == true) return false;
第二点:
if (1 == 1 && 2 == 2) { return false; }
请注意,逻辑等于的双等号==符号与处理变量赋值的单等号==符号不同。这样测试时:
opening=true;
您真正做的是将opening设置为true的值。使用==代替
最后,操作顺序,即使正确,也会变得混乱。在比较的每个部分用括号括起来
if (($(this).attr("id") === 'search') || (opening == true)) return false;
我的猜测是===不存在。 ==用于测试相等性 因此,如果$this.attrid=='search'| | opening==true,则返回false;
如果$this.attrid='search'| | opening==true返回false,则应为 第二个变量给出错误,因为您无法为1赋值,因为它不是有效的变量名。与2相同。==比较值和类型。它肯定是一个有效的运算符。还有其他代码吗?因为在这里它并没有做错任何事情,除了开头的赋值。问题是:为什么需要更多的代码?您可以非常清楚地看到,这里的问题是使用单个equals来确定语句中的相等性。请注意,在if条件中使用=通常被认为是不好的做法,但仍然是完全有效的。问题中的代码给出错误的原因是,运算符优先级导致表达式的计算结果为$this.attrid=='search'| | opening=true,当然,第一部分$this.attrid=='search'| | opening不是一个变量,因此无法为其赋值。