Podmíněný ternární operátor v JavaScript přiřazuje hodnotu proměnné na základě některých podmínek a je jediným operátorem JavaScriptu, který bere tři operandy.
Ternární operátor je náhradou za -li prohlášení, ve kterém oba -li a jiný klauzule přiřazují různé hodnoty stejnému poli, například:
pokud (podmínka)
result = 'něco';
jiný
result = 'someelse';
Ternární operátor zkrátí tento příkaz if / else do jednoho příkazu:
výsledek = (podmínka)? 'něco': 'něcoelse';
Li stav je pravda, ternární operátor vrátí hodnotu prvního výrazu; jinak vrátí hodnotu druhého výrazu. Podívejme se na jeho části:
- Nejprve vytvořte proměnnou, které chcete přiřadit hodnotu, v tomto případě výsledek. Proměnná výsledek bude mít jinou hodnotu v závislosti na stavu.
- Všimněte si, že na pravé straně (tj. Samotný operátor), stav je první.
- stav je vždy následován otazníkem (?), což lze v podstatě chápat jako „bylo to pravda?“
- Poslední dva možné výsledky jsou oddělené dvojtečkou (:).
Toto použití ternární operátor je k dispozici, pouze pokud je originál
-li příkaz odpovídá formátu uvedenému výše - ale je to docela běžný scénář a použití ternárního operátora může být mnohem efektivnější.Příklad ternárního operátora
Podívejme se na skutečný příklad.
Možná budete muset určit, které děti jsou v pravém věku, aby navštěvovaly mateřskou školu. Můžete mít podmíněné prohlášení, jako je toto:
var věk = 7;
var kindergarten_eligible;
if (age> 5) {
kindergarten_eligible = "dost starý";
}
jinde {
kindergarten_eligible = "Příliš mladý";
}
Pomocí ternárního operátora můžete výraz zkrátit na:
var kindergarten_eligible = (věk <5)? „Příliš mladý“: „Dost starý“;
Tento příklad by samozřejmě vrátil „dost starý“.
Více hodnocení
Můžete také zahrnout více hodnocení:
var age = 7, var socially_ready = true;
var kindergarten_eligible = (věk <5)? "Příliš mladý": socially_ready
„Dost starý, ale ještě nepřipravený“ „Dost starý a společensky zralý“
console.log (kindergarten_eligible); // protokoly „dostatečně staré a společensky zralé“
Více operací
Ternární operátor také umožňuje zahrnutí více operací pro každý výraz oddělených čárkou:
var age = 7, socially_ready = true;
věk> 5? (
upozornění („Jsi dost starý.“),
location.assign ("pokračovat.html")
): (
socially_ready = false,
upozornění („Litujeme, ale ještě nejste připraveni.“)
);
Implikace ternárního operátora
Ternární operátoři se vyhýbají jinak podrobně kód, na jedné straně se jeví jako žádoucí. Na druhé straně mohou ohrozit čitelnost - očividně „IF ELSE“ je snadněji pochopitelné než záhadné „?“.
Při použití ternárního operátora - nebo jakékoli zkratky - zvažte, kdo bude číst váš kód. Pokud bude méně zkušený vývojář potřebovat pochopit vaši logiku programu, je třeba se vyhnout použití ternárního operátora. To platí zejména v případě, že váš stav a vyhodnocení jsou dostatečně komplexní, že byste museli hnízdo nebo řetězy svého ternárního operátora. Ve skutečnosti mohou tyto druhy vnořených operátorů ovlivnit nejen čitelnost, ale i ladění.
Jako u každého programovacího rozhodnutí, nezapomeňte zvážit kontext a použitelnost před použitím ternárního operátora.