Jak používáte ? :(podmíněný) operátor v JavaScriptu?

Jednoduše řečeno, co je ?: (podmíněný, „ternární“) operátor a jak jej mohu použít?

Odpověď

Toto je jednořádková zkratka pro příkaz if-else. Říká se tomu podmíněný operátor. 1

Zde je příklad kódu, který lze zkrátit pomocí podmíněného operátoru:

var userType;
if (userIsYoungerThan18) {
  userType = "Minor";
} else {
  userType = "Adult";
}

if (userIsYoungerThan21) {
  serveDrink("Grape Juice");
} else {
  serveDrink("Wine");
}

Toto lze zkrátit pomocí ?: takhle:

var userType = userIsYoungerThan18 ? "Minor" : "Adult";

serveDrink(userIsYoungerThan21 ? "Grape Juice" : "Wine");

Jako všechny výrazy lze i podmíněný operátor použít jako samostatný příkaz s vedlejšími účinky, i když mimo minifikace je to neobvyklé:

userIsYoungerThan21 ? serveGrapeJuice() : serveWine();

Mohou být dokonce spoutány:

serveDrink(userIsYoungerThan4 ? 'Milk' : userIsYoungerThan21 ? 'Grape Juice' : 'Wine');

Buďte však opatrní, jinak skončíte se spletitým kódem takto:

var k = a ? (b ? (c ? d : e) : (d ? e : f)) : f ? (g ? h : i) : j;

1 Často se mu říká „ternární operátor“, ale ve skutečnosti je to jen a ternární operátor [operátor akceptující tři operandy]. Je to však jediný, který JavaScript v současnosti má.