JavaScript中的Or运算符后的条件语句

时间:2017-01-16 19:32:33

标签: javascript operators conditional

在JavaScript中,是否可以在Or运算符后面放置条件语句?如果是这样,为什么以下内容对我失败?

var value = 1 || true ? 2 : 3;    // equals to 2

当我将value设置为等于[1 || true ? 2 : 3]时,我得到一个意外的结果。 获得的结果是:

value == 2

我预期值等于1(value= = 1),因为1是真的,而且Or语句应该返回1.条件语句甚至不应该被执行。

val可以等于2(val == 2)的唯一方法是,如果Or运算符的行为不符合预期,并运行Or语句的第二部分和其中的条件语句。

为什么这样做?

2 个答案:

答案 0 :(得分:3)

  

我期望值​​等于1(值= 1),因为1是真实的

要做到这一点,你需要parens:

var value = 1 || (true ? 2 : 3);
// --------------^------------^

没有它们,||介于1true之间,然后条件运算符的第一个操作数就是1}的结果。

这是因为||的优先级高于条件运算符(just); here's a table on MDN

答案 1 :(得分:0)

因为Logical OR优先于Conditional运算符。那么你的陈述实际上被解释为:

(1 || true) ? 2 : 3;

显然评估为2

请参阅MDN