2017-01-16 46 views
1

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

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

当我将值设置为等于[1 || true ? 2 : 3]时,我收到了意想不到的结果。 那得到的结果是:

value == 2 

我的预期值是等于1(value= = 1),自1 truthy,和Or语句应该具有回报1.条件语句,甚至不应该被执行。

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

为什么表现如此?

+1

因为它被解释为'(1 || true)? 2:3' – haim770

+0

哦..我忘记了运营商的优先权.. –

回答

3

我的预期值是等于1(值= 1),因为1是truthy

为了得到这一点,你需要的括号:

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

没有他们, ||介于1true之间,那么条件运算符的第一个操作数就是其结果(即1)。

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

0

因为Logical OR优先于Conditional运营商。然后你的声明实际上是解释为:

(1 || true) ? 2 : 3; 

这显然计算结果为2

请参阅MDN

+0

谢谢你们的快速反应(: –

相关问题