Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 或在三元运算符中,使用&&;_Javascript_If Statement_Ternary Operator - Fatal编程技术网

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

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语句,我可以做到:

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
长几个字符,但更容易修改。不管怎样,编码快乐@艾力克斯·艾隆-:-)我希望我上面的夸大其词是出于一种友好的精神。书面交流很难。快乐编码!