使用传统的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');
答案 0 :(得分:5)
只需加上括号以防止&&
优先于||
的运算符
(a === 0 || b === 0) && console.log('aloha amigo')
没有括号,您将获得不同的结果(现在用来显示优先级)。
a === 0 || (b === 0 && console.log('aloha amigo'))
^^^^^^^ first evaluation
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ second evaluation