【发布时间】:2018-12-14 20:13:30
【问题描述】:
使用传统的 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');
【问题讨论】:
-
“但是当我尝试用三元运算符做同样的事情时……” 那不是三元运算符(一个接受三个操作数的运算符)。那是两个二元运算符(
||和&&-- 接受 two 操作数的运算符)。 JavaScript 目前只有一个三元运算符:条件运算符:condition ? ifTrue : ifFalse。它可能会在某个阶段添加另一个三元组,但现在它只有一个。
标签: javascript if-statement ternary-operator