javascript - OR 在三元运算符中,使用 &&

标签 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

最佳答案

只需带括号以防止 && 的运算符优先级超过 ||

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

没有括号,你会得到(现在用显示优先级)不同的结果。
a === 0 || (b === 0 && console.log('aloha amigo'))
^^^^^^^                                             first evaluation
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  second evaluation

关于javascript - OR 在三元运算符中,使用 &&,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51206667/

相关文章:

java - 是否可以将这两行写为三元运算符?

C++ 三元运算符逻辑

javascript - Node 服务器上的多个 setInterval 计时器

javascript - 如何在 Angular 6 中的表的单独列中显示多行值的总计?

c - 三元运算是否在编译时进行?

coding-style - 'else' 在不需要的情况下应该保留还是删除?

C 语言中的级联和嵌套 if 语句

javascript - 如何在 Node.js 中操作 Mocha 测试的结果?

JavaScript "Class" "Private"变量作用域

java - 而 else 语句等同于 Java?