如何在三元运算符语句中使用 &&?
How do I use && in a ternary operator statement?
我正在尝试理解三元运算符。但是,我现在很难过!
我想在声明中使用&&。
这是我尝试使用三元运算符创建的代码:
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);
您的问题与 &&
无关,但与 ?:
语法有关,并且与整个 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"));
当您使用传统 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
我正在尝试理解三元运算符。但是,我现在很难过! 我想在声明中使用&&。
这是我尝试使用三元运算符创建的代码:
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);
您的问题与 &&
无关,但与 ?:
语法有关,并且与整个 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"));
当您使用传统 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