我试图了解三元运算符。但是,我现在很难过! 我想在语句中使用&&。
这是我尝试使用三元运算符创建的代码:
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);
答案 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