在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语句的第二部分和其中的条件语句。
为什么这样做?
答案 0 :(得分:3)
我期望值等于1(值= 1),因为1是真实的
要做到这一点,你需要parens:
var value = 1 || (true ? 2 : 3);
// --------------^------------^
没有它们,||
介于1
和true
之间,然后条件运算符的第一个操作数就是1
}的结果。
这是因为||
的优先级高于条件运算符(just); here's a table on MDN
答案 1 :(得分:0)