Javascript 或在三元运算符中,使用&&;
使用传统的if语句,我可以做到:Javascript 或在三元运算符中,使用&&;,javascript,if-statement,ternary-operator,Javascript,If Statement,Ternary Operator,使用传统的if语句,我可以做到: if(a===0 || b===0) {console.log('aloha amigo')}; 但当我尝试用三元运算符做同样的事情时,比如: a===0 || b===0 && console.log('aloha amigo') 我只是在意外情况下出错 根据这个答案:,我们可以使用 condition1 || condition2 ? do if true : do if false (很抱歉,我不确定如何调用?:符号,但我不确定如何使
if(a===0 || b===0) {console.log('aloha amigo')};
但当我尝试用三元运算符做同样的事情时,比如:
a===0 || b===0 && console.log('aloha amigo')
我只是在意外情况下出错
根据这个答案:,我们可以使用
condition1 || condition2 ? do if true : do if false
(很抱歉,我不确定如何调用?:
符号,但我不确定如何使用&&
运行它(这意味着只有在返回true
时才运行代码)
我创建了一个代码笔来轻松测试它。以下是全部代码:
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');
只需使用括号,以防止
&
的运算符优先于|
(a === 0 || b === 0) && console.log('aloha amigo')
如果没有括号,您将得到(现在使用以显示优先级)不同的结果
a === 0 || (b === 0 && console.log('aloha amigo'))
^^^^^^^ first evaluation
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ second evaluation
“但是当我尝试用三元运算符做同样的事情时……”这不是三元运算符(一个接受三个操作数的运算符)。这是两个二进制运算符(
|
和&
——接受两个操作数的运算符)。JavaScript目前只有一个三元运算符:条件运算符:condition?如果正确:如果错误
。它可以在某个阶段添加另一个三元数,但现在它只有一个。好的,这很有效。但我为什么要把它放在括号里呢?我将在10年内选出最好的min@alex.iron-更大的问题是,为什么要浪费时间使代码更不可读、更难维护、更容易出错?;-)如果,只需使用。这就是它的目的。甚至该语言的作者Brendan Eich也调用了条件&&doSomething()
是&&
操作符的一种用法。我看到人们在使用它,它很有意义,所以我开始使用它。但它看起来可读。这是一个较短的if语句,不是吗?@alex.iron-当然,可读性在读者的眼中。:-)更短!=更好。将缩小留给缩小者。相反,要编写清晰、易于修改的代码。在这里,带有适当块的if
长几个字符,但更容易修改。不管怎样,编码快乐@艾力克斯·艾隆-:-)我希望我上面的夸大其词是出于一种友好的精神。书面交流很难。快乐编码!