如果第一个条件为真,则在javascript中为变量赋值,参考错误无效赋值左侧

时间:2015-06-29 12:19:20

标签: javascript

我正在尝试这样做。

index==5&&index=6;

index是一个定义的变量,如果它的值为5,它应该被赋值为6,但是它给出了一个错误ReferenceError:左侧无效赋值,这在php中工作。我知道替代方法这样做,但这种行为背后的原因是什么

3 个答案:

答案 0 :(得分:3)

这只是precedence。使用括号:

index&&(index=6);

这一点并不明显是避免这种伎俩的重要原因。喜欢一个好的旧if,这样任何人都可以立即解析你的代码(代码质量工具会警告你这个)。

答案 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