什么是?:(问号和冒号运算符。条件或“三元”)操作符,我如何使用它?
当前回答
这是if-else语句的一行简写。它叫做条件算子
下面是一个可以用条件操作符缩短的代码示例:
var userType;
if (userIsYoungerThan18) {
userType = "Minor";
} else {
userType = "Adult";
}
if (userIsYoungerThan21) {
serveDrink("Grape Juice");
} else {
serveDrink("Wine");
}
这个可以用?:来缩短,像这样:
var userType = userIsYoungerThan18 ? "Minor" : "Adult";
serveDrink(userIsYoungerThan21 ? "Grape Juice" : "Wine");
像所有表达式一样,条件操作符也可以作为带有副作用的独立语句使用,尽管这在简化之外是不常见的:
userIsYoungerThan21 ? serveGrapeJuice() : serveWine();
它们甚至可以被捆绑:
serveDrink(userIsYoungerThan4 ? 'Milk' : userIsYoungerThan21 ? 'Grape Juice' : 'Wine');
但是要小心,否则你最终会得到像这样令人费解的代码:
var k = a ? (b ? (c ? d : e) : (d ? e : f)) : f ? (g ? h : i) : j;
1通常被称为“三元操作符”,但实际上它只是一个三元操作符(接受三个操作数的操作符)。不过,这是JavaScript目前仅有的一个功能。
其他回答
它被称为“三元”或“条件”操作符。
例子
?:操作符可以用作 if的快捷方式…else语句。 它通常用作 更大的表达式,其中if…else 声明会很尴尬。为 例子:
var now = new Date();
var greeting = "Good" + ((now.getHours() > 17) ? " evening." : " day.");
这个例子创建了一个字符串 上面写着"晚上好 下午6点之后。使用的等效代码 一个如果…Else语句看起来像 如下:
var now = new Date();
var greeting = "Good";
if (now.getHours() > 17)
greeting += " evening.";
else
greeting += " day.";
来自MSDN JS文档。
基本上这是一个简写的条件语句。
还看到:
Javascript三元运算符的运算符优先级 维基百科
这可能不是最优雅的方式。但是对于不熟悉三元运算符的人来说,这可能是有用的。我个人倾向于使用一行程序回退,而不是使用条件块。
// var firstName = 'John'; // Undefined
var lastName = 'Doe';
// if lastName or firstName is undefined, false, null or empty => fallback to empty string
lastName = lastName || '';
firstName = firstName || '';
var displayName = '';
// if lastName (or firstName) is undefined, false, null or empty
// displayName equals 'John' OR 'Doe'
// if lastName and firstName are not empty
// a space is inserted between the names
displayName = (!lastName || !firstName) ? firstName + lastName : firstName + ' ' + lastName;
// if display name is undefined, false, null or empty => fallback to 'Unnamed'
displayName = displayName || 'Unnamed';
console.log(displayName);
三元运算符
如果你在javascript中有一个条件检查实例函数。三元算符易于使用。只需要一行就可以实现。 例:
private module : string ='';
private page:boolean = false;
async mounted(){
if(this.module=== 'Main')
{
this.page = true;}
else{
this.page = false;
}
}
只有一个条件的函数可以写成这样。
this.page = this.module=== 'Main' ?true:false;
条件?if True: False
这是if-else语句的一行简写。它叫做条件算子
下面是一个可以用条件操作符缩短的代码示例:
var userType;
if (userIsYoungerThan18) {
userType = "Minor";
} else {
userType = "Adult";
}
if (userIsYoungerThan21) {
serveDrink("Grape Juice");
} else {
serveDrink("Wine");
}
这个可以用?:来缩短,像这样:
var userType = userIsYoungerThan18 ? "Minor" : "Adult";
serveDrink(userIsYoungerThan21 ? "Grape Juice" : "Wine");
像所有表达式一样,条件操作符也可以作为带有副作用的独立语句使用,尽管这在简化之外是不常见的:
userIsYoungerThan21 ? serveGrapeJuice() : serveWine();
它们甚至可以被捆绑:
serveDrink(userIsYoungerThan4 ? 'Milk' : userIsYoungerThan21 ? 'Grape Juice' : 'Wine');
但是要小心,否则你最终会得到像这样令人费解的代码:
var k = a ? (b ? (c ? d : e) : (d ? e : f)) : f ? (g ? h : i) : j;
1通常被称为“三元操作符”,但实际上它只是一个三元操作符(接受三个操作数的操作符)。不过,这是JavaScript目前仅有的一个功能。
当你拥有的都是符号时,想要谷歌有点困难;)使用的术语是“JavaScript条件运算符”。
如果您在JavaScript中看到更多有趣的符号,您应该首先尝试查找JavaScript的操作符:Mozilla Developer Center的操作符列表。您可能遇到的一个例外是$符号。
为了回答您的问题,条件操作符替换了简单的if语句。最好举个例子:
var insurancePremium = age > 21 ? 100 : 200;
而不是:
var insurancePremium;
if (age > 21) {
insurancePremium = 100;
} else {
insurancePremium = 200;
}