[英]Convert if statement to ternary operator
我试图将这些if语句转换为三元:
var eatsPlants = false;
var eatsAnimals = true;
if(eatsPlants){
return 'herbivore';
}else if(eatsAnimals){
return 'carnivore';
}else if(eatsPlants && eatsAnimals){
return 'omnivore';
}else{
return undefined;
}
这是我的解决方案:
var category = eatsPlants && eatsAnimals ? "omnivore" : "herbivore" : "carnivore" : undefined;
console.log(category);
但这不起作用,它返回错误的分号。
知道如何解决吗?
您忘记了其他两个条件,并更改了检查顺序(尽管这实际上是使其工作所必需的)。 你要么做
return (eatsPlants && eatsAnimals
? 'omnivore'
: (eatsPlants
? 'herbivore'
: (eatsAnimals
? 'carnivore'
: undefined)));
或者,通过嵌套避免AND操作,
return (eatsPlants
? (eatsAnimals
? 'omnivore'
: 'herbivore')
: (eatsAnimals
? 'carnivore'
: undefined));
(括号和缩进是可选的,但出于可读性考虑,强烈建议至少使用其中之一)。
if
条件也应该添加其余的
var category = eatsPlants && eatsAnimals ? "omnivore" : eatsPlants? "herbivore" : eatsAnimals? "carnivore" : undefined;
console.log(category);
您共享的js代码段可能会引发错误,因为return语句不在函数内部。
已经创建了另一个变量returnResult
,该变量将根据条件使用新值进行赋值。
!1为假&!0为真,void 0未定义
var eatsPlants = !1, eatsAnimals = !0, returnResult = "";
returnResult = eatsPlants ? "herbivore" : eatsAnimals ? "carnivore" : eatsPlants && eatsAnimals ? "omnivore" : void 0;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.