如何在三元运算符中使用&&?

时间:2019-06-26 06:04:47

标签: javascript ternary-operator

我试图了解三元运算符。但是,我现在很难过! 我想在语句中使用&&。

这是我尝试使用三元运算符创建的代码:

if (eatsPlants === true &&  eatsAnimals === true) {
"omnivor";
} else { 
"undefined";
}

这是我尝试过的:

(eatsPlants && eatsAnimals) ? "omnivore" : "undefind";

这是我到目前为止的全部代码:

var eatsPlants = true;
var eatsAnimals = true;
var category = 
eatsPlants ? "herbivore" : "carnivor";
eatsAnimals ? "carnivor" : "herbivor";
(eatsPlants && eatsAnimals) ? "omnivore" : "undefined";

console.log(category);

2 个答案:

答案 0 :(得分:0)

您的问题与&&无关,但与?:语法以及整个JavaScript语句的语法无关。

var category = 
eatsPlants ? "herbivore" : "carnivor";
eatsAnimals ? "carnivor" : "herbivor";
(eatsPlants && eatsAnimals) ? "omnivore" : "undefined";

是三个独立的语句:一个依赖于eatsPlants的赋值,以及两个其结果将被丢弃的评估。这将完成您想要的事情:

var category = 
    (eatsPlants && eatsAnimals) ? "omnivore" :
    eatsPlants ? "herbivore" :
    eatsAnimals ? "carnivore" : "undefined";

之所以起作用,是因为优先规则说?:从右边绑定;即之前的代码等同于

var category = 
    (eatsPlants && eatsAnimals) ? "omnivore" :
    (eatsPlants ? "herbivore" :
    (eatsAnimals ? "carnivore" : "undefined"));

答案 1 :(得分:0)

使用传统的if-else时,将在if-else块中放入一条语句。简单地放置一个表达式(然后解析为一个值),除了给出值外什么也没有。因此不会发生价值分配。

对于三元运算符,它是一个可解析为值的表达式,您可以将其分配给某些变量

let category ;
if (eatsPlants === true &&  eatsAnimals === true) {
  category = "omnivor"; // statement
} else { 
  category = "undefined";
}



let category2 = (eatsPlants === true &&  eatsAnimals === true)? "omnivor": "undefined"; // expression