Dies ist eine einzeilige Kurzform für eine if-else-Anweisung. Man nennt ihn den Bedingungsoperator. 1
Hier ein Beispiel für einen Code, der mit dem Bedingungsoperator verkürzt werden kann:
var userType;
if (userIsYoungerThan18) {
userType = "Minor";
} else {
userType = "Adult";
}
if (userIsYoungerThan21) {
serveDrink("Grape Juice");
} else {
serveDrink("Wine");
}
Diese kann mit der Option ?:
etwa so:
var userType = userIsYoungerThan18 ? "Minor" : "Adult";
serveDrink(userIsYoungerThan21 ? "Grape Juice" : "Wine");
Wie alle Ausdrücke kann auch der Bedingungsoperator als eigenständige Anweisung mit Seiteneffekten verwendet werden, allerdings ist dies ungewöhnlich außerhalb der Minifizierung:
userIsYoungerThan21 ? serveGrapeJuice() : serveWine();
Sie können sogar angekettet werden:
serveDrink(userIsYoungerThan4 ? 'Milk' : userIsYoungerThan21 ? 'Grape Juice' : 'Wine');
Seien Sie jedoch vorsichtig, sonst erhalten Sie einen verworrenen Code wie diesen:
var k = a ? (b ? (c ? d : e) : (d ? e : f)) : f ? (g ? h : i) : j;
1 Oft als "ternärer Operator" bezeichnet, aber eigentlich ist es nur a ternärer Operator [ein Operator, der drei Operanden akzeptiert]. Es ist der einzige, den JavaScript derzeit hat, aber.