或在三元运算符中,使用&&

时间:2018-07-06 09:00:46

标签: javascript if-statement ternary-operator

使用传统的if语句,我可以做到这一点:

if(a===0 || b===0) {console.log('aloha amigo')};

但是当我尝试使用三元运算符做相同的事情时,就像这样:

a===0 || b===0 && console.log('aloha amigo')

我只是收到有关意外||的错误。

根据以下答案:Precedence: Logical or vs. Ternary operator,我们可以使用

condition1 || condition2 ? do if true : do if false

(对不起,在这种情况下,我不确定如何调用? :符号),但是我不确定如何使用&&使它运行(这意味着仅在以下情况下运行代码)返回true)。

我创建了一个Codepen来对其进行轻松测试。这是整个代码:

var a = 0;
var b = 1;

a===0 || b===0 ? console.log('Works here') : console.log('And here');

a===0 || b===0 && console.log('Doesn\'t work here');

a===0 && console.log('The && works for a single test');

Here's the link

1 个答案:

答案 0 :(得分:5)

只需加上括号以防止&&优先于||的运算符

(a === 0 || b === 0) && console.log('aloha amigo')

没有括号,您将获得不同的结果(现在用来显示优先级)。

a === 0 || (b === 0 && console.log('aloha amigo'))
^^^^^^^                                             first evaluation
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  second evaluation