你如何使用? :JavaScript中的(条件)运算符?
有人可以用简单的语言向我解释什么是?:
(有条件的“三元”)操作符以及如何使用它?
这是一个if-else语句的单行速记。 它被称为条件操作符
以下是可以使用条件运算符缩短的代码示例:
if(userIsYoungerThan21) {
serveGrapeJuice();
}
else {
serveWine();
}
这可以用?:
缩短?:
就像这样:
userIsYoungerThan21 ? serveGrapeJuice() : serveWine();
在JavaScript中,条件运算符可以评估一个表达式,而不仅仅是一个语句:
var userType = userIsYoungerThan18 ? "Minor" : "Adult";
serveDrink(userIsYoungerThan21 ? "Grape Juice" : "Wine");
他们甚至可以链接在一起:
userIsYoungerThan4 ? serveMilk() : userIsYoungerThan21 ? serveGrapeJuice() : serveWine();
不过要小心,否则你最终会得到如此复杂的代码:
var k = a ? (b ? (c ? d : e) : (d ? e : f)) : f ? (g ? h : i) : j;
1通常称为“三元操作符”,但实际上它只是一个三元操作符[接受三个操作数的操作符]。 不过,这是目前唯一的JavaScript。
我想补充一些给出的答案。
如果你遇到(或想要使用)三元组,如'显示一个变量,如果它已经设置,否则...',你可以使它更短,没有三元组。
代替:
var welcomeMessage = 'Hello ' + (username ? username : 'guest');
您可以使用:
var welcomeMessage = 'Hello ' + (username || 'guest');
这是PHP的速记三元运算符的Javascript equivallent ?:
甚至:
var welcomeMessage = 'Hello ' + (username || something || maybethis || 'guest');
它评估变量,如果它是错误的或未设置的,它会继续下一个。
它被称为'三元'或'条件'操作符。
例
?:操作符可以用作if ... else语句的快捷方式。 它通常用作更大表达式的一部分,其中if ... else语句会很尴尬。 例如:
var now = new Date();
var greeting = "Good" + ((now.getHours() > 17) ? " evening." : " day.");
该示例创建一个包含“晚上好”的字符串。 如果是在下午6点以后。 使用if ... else语句的等效代码如下所示:
var now = new Date();
var greeting = "Good";
if (now.getHours() > 17)
greeting += " evening.";
else
greeting += " day.";
从MSDN JS文档。
基本上它是一个简短的条件陈述。
另请参阅:
上一篇: How do you use the ? : (conditional) operator in JavaScript?