JavaScript jediný riadok 'if' príkazu - najlepšia syntax, táto alternatíva?


Bolo to jasne povedané, aj keď ide stále o názor, že vynechanie zložených zátvoriek pri jednoradkovom if príkaze nie je ideálne pre udržiavateľnosť a čitateľnosť.

A čo toto?

if (lemons) { document.write("foo gave me a bar"); }

Je to ešte viac komprimované, a ak by sa rozšírilo, zatváracie zložené zátvorky by sa nezabudli. Sú nejaké zjavné problémy, a ak nie, aké sú úvahy? Mám pocit, že je to stále veľmi čitateľné, aspoň rovnako ako ternárny operátor. Zdá sa mi, že ternárne operátory nie sú toľko odporúčané kvôli čitateľnosti, hoci mám pocit, že tento záver nie je úplne jednomyseľný.

Zlý dvojník vo mne chce toto navrhnúť, hoci syntax zjavne na to nie je určená a pravdepodobne je to len zlý nápad.

(syntax) ? document.write("My evil twin emerges"): "";

Odpoveď č. 1

Videli sme správanie skratového vyhodnocovania operátora &&, ktoré sa používa na dosiahnutie tohto efektu, hoci ľudia, ktorí si na to nie sú zvyknutí, to môžu považovať za ťažko čitateľné alebo dokonca za anti-vzor:

lemons && document.write("foo gave me a bar");  

Osobne často používam jednoradkový if bez zátvoriek, takto:

if (lemons) document.write("foo gave me a bar");

Ak budem potrebovať pridať ďalšie príkazy, vložím ich na nasledujúci riadok a pridám zátvorky. Keďže môj IDE vykonáva automatické odsadenie, námietky ohľadom udržiavateľnosti tejto praxe sú irelevantné.

Odpoveď č. 2

Používam to takto:

alert(lemons ? "please give me a lemonade" : "then give me a beer") 

Odpoveď č. 3

Ako už bolo uvedené, môžete použiť:

&& štýl

lemons && document.write("foo gave me a bar");  

alebo

štýl bez zátvoriek

if (lemons) document.write("foo gave me a bar");

skratový návrat

Ak však chcete použiť jednoradkový if príkaz na prerušovanie funkcie, budete musieť zvoliť verziu bez zátvoriek takto:

if (lemons) return "foo gave me a bar";

ako

lemons && return "foo gave me a bar"; // does not work!

dá vám SyntaxError: Neočakávané kľúčové slovo 'return'

Odpoveď č. 4

Môžete použiť tento formát, ktorý sa bežne používa v PHP:

(lemon) ? document.write("foo gave me a bar") : document.write("if condition is FALSE");

Odpoveď č. 5

môže použiť toto,

lemons ? alert("please give me a lemonade") : alert("then give me a beer");

vysvetlenie: ak je lemons pravda, potom alert("prosím daj mi limonádu"), ak nie, alert("tak mi daj pivo")

Odpoveď č. 6

Tento jeden riadok je oveľa čistejší.

if(dog) alert('bark bark');

Uprednostňujem toto. Dúfam, že to niekomu pomôže

Odpoveď č. 7

Ako povedalo veľa ľudí, ak hľadáte skutočný jednoradkový if then:

    if (Boolean_expression) do.something();

je preferované. Avšak, ak sa chystáte použiť if/else, ternárny operátor je váš priateľ (a tiež super cool):

    (Boolean_expression) ? do.somethingForTrue() : do.somethingForFalse();

TIEŽ:

    var something = (Boolean_expression) ? trueValueHardware : falseATRON;

Avšak, videl som jeden veľmi cool príklad. Pozdravy pre @Peter-Oslson za &&

    (Boolean_expression) && do.something();

Nakoniec, nie je to if výrok, ale vykonávanie vecí v slučke s použitím map/reduce alebo Promise.resolve() je tiež zábava. Pozdravy pre @brunettdan

Odpoveď č. 8

// Ďalší jednoduchý príklad

 var a = 11;
 a == 10 ? alert("true") : alert("false");

Odpoveď č. 9

(i === 0 ? "true" : "false")

Súvisiace články