这是If-Else语句的一行简写.它称为条件运算符.1
下面是一个可以用条件运算符缩短的代码示例:
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");
与所有表达式一样,条件运算符也可以用作具有副作用的独立语句,尽管这在缩小范围之外是unusual:
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 Often called "the ternary operator," but in fact it's just a ternary operator [an operator accepting three operands]. It's the only one JavaScript currently has, though.