我正在尝试这样做。
index==5&&index=6;
index是一个定义的变量,如果它的值为5,它应该被赋值为6,但是它给出了一个错误ReferenceError:左侧无效赋值,这在php中工作。我知道替代方法这样做,但这种行为背后的原因是什么
答案 0 :(得分:3)
答案 1 :(得分:2)
但风格并不好。
index == 5 && (index = 6);
答案 2 :(得分:2)
赋值运算符=
的运算符优先级非常低。因此,您的表达式被解析为
(index == 5 && index) = 6
您可以将赋值运算符括起来:
index == 5 && (index = 6);
您还可以重写声明,以便将来的程序员可以更轻松地理解您的意图:
if (index == 5) index = 6;
检查运算符优先级的简便方法是查看规范。优先级较低的运算符在规范中比在高优先级运算符中进一步描述。 Mozilla网站上还有this handy table。