Das auslassen der zweite Ausdruck, wenn die Verwendung des if-else-Kurzform
Kann ich schreiben 'wenn sonst' die Kurzform ohne den sonst?
var x=1;
x==2 ? dosomething() : doNothingButContinueCode();
Habe ich bemerkt, putting null
für die andere funktioniert (aber ich habe keine Ahnung warum oder ob das ein gute Idee).
Edit: Einige von Euch scheinen verwirrt zu sein, warum würde ich die Mühe zu versuchen. Seien Sie versichert, es ist rein aus Neugier. Ich mag Herumspielen mit JavaScript.
InformationsquelleAutor der Frage Nikki | 2012-06-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist auch eine option:
dosomething()
wird nur aufgerufen werden, wennx==2
als wahr ausgewertet wird. Dies wird als Kurzschluss.Es ist nicht Häufig verwendet, in Fällen wie diesem, und Sie sollten wirklich nicht den code schreiben, wie diese. Ich ermutige diese einfacheren Ansatz:
Schreiben Sie lesbaren code zu allen Zeiten; wenn Sie besorgt über die Dateigröße, erstellen Sie einfach eine minified-version der es mit Hilfe einer der vielen JS-Kompressoren. (e.g Google Closure Compiler)
InformationsquelleAutor der Antwort ajax333221
Was Sie haben, ist eine ziemlich ungewöhnliche Verwendung des ternärer operator. Normalerweise wird es benutzt, als ein Ausdruck, keine Anweisung, innerhalb von einer operation, z.B.:
So, zur besseren Lesbarkeit (weil das, was Sie tun, ist ungewöhnlich), und weil es vermeidet die "else", dass Sie nicht wollen, würde ich vorschlagen:
InformationsquelleAutor der Antwort Nicole
Andere Möglichkeit:
InformationsquelleAutor der Antwort Buzinas
Wenn Sie nicht tun, die sonst, warum nicht:
InformationsquelleAutor der Antwort Prescott
Mit
null
ist in Ordnung für einen der Zweige eines ternären Ausdruck. Und ein ternärer Ausdruck ist in Ordnung, so wie eine Anweisung in Javascript.Als eine Frage des Stils, obwohl, wenn Sie im Sinn haben den Aufruf einer Prozedur, klarer zu schreiben, das mit if..else:
oder, in Ihrem Fall,
InformationsquelleAutor der Antwort Ted Hopp
Eine kleine Ergänzung zu diesem sehr, sehr Alter thread..
Sagen wir mal Ihr 'E innerhalb einer
for
Schleife und bewerten müssen, eine variable für eintruthy/falsy
Wert mit einem ternären operator, während in Fall ist esfalsy
Sie wollencontinue
- wirst du ein problem haben, weil Ihr' E nicht wieder ein Ausdruck ,kehren Sie stattdessen eine Anweisung ohne jeden Wert.Diese produzieren
Uncaught SyntaxError: Unexpected token continue
Also, wenn Sie wollen, um eine Anweisung und noch eine Zeile für den code, während es scheinen mag ein bisschen seltsam auf den ersten Blick und kann nicht Folgen strengen Sprachgebrauch, Sie können dies tun, statt:
InformationsquelleAutor der Antwort DotBot
Technisch, putting null oder 0 oder nur ein paar zufällige Wert es funktioniert (da Sie nicht mit der return-Wert). Jedoch, warum sind Sie über dieses Konstrukt anstelle der
if
Konstrukt? Es ist weniger klar, was Sie versuchen zu tun, wenn Sie code schreiben, der auf diese Weise, wie du die Leute verwirren, die mit dem no-op (null in deinem Fall).InformationsquelleAutor der Antwort nhahtdh