【问题标题】:How do I use && in a ternary operator statement?如何在三元运算符语句中使用 &&?
【发布时间】:2019-11-08 00:12:57
【问题描述】:

我正在尝试理解三元运算符。然而,我现在被难住了! 我想在语句中使用 &&。

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

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);

【问题讨论】:

  • "omnivor"; 什么都不做。您原来的 if 声明无效。目前尚不清楚您要达到的目标。
  • console.log 之前的最后两行没有任何作用。您没有为任何变量设置任何新值。

标签: javascript ternary-operator


【解决方案1】:

当您使用传统的 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

【讨论】:

    【解决方案2】:

    您的问题与&& 无关,而与?: 语法有关,并且与整个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"));
    

    【讨论】:

    • 谢谢!这帮助我理解了如何正确使用带有 && 的三元语句。
    猜你喜欢
    • 1970-01-01
    • 2018-02-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 2016-04-25
    • 2016-06-28
    相关资源
    最近更新 更多