Kann ich die if else
Kurzschrift ohne die schreiben else
?
var x=1;
x==2 ? dosomething() : doNothingButContinueCode();
Ich habe bemerkt, null
dass das Putten für das andere funktioniert (aber ich habe keine Ahnung, warum oder ob das eine gute Idee ist).
Edit: Einige von euch scheinen amüsiert zu sein, warum ich das versuchen würde. Seien Sie versichert, es ist nur aus Neugier. Ich mag es, mit JavaScript herumzuspielen.
var | var
Syntax. Vorsicht, da es möglicherweise schwierig ist, "zu sehen", insbesondere (IMO) -Ternäre, die problematisch sind. Sparsam verwenden.:)
foo = bar | cat;
, wo, wenn das erste falsch ist? null?, es "fällt durch" auf die Sekunde. Ich habe es jedoch nur gesehen und benutze es nicht.a || b
odera && b
wird sonstb
immer ausgewertet.Antworten:
Dies ist auch eine Option:
dosomething()
wird nur aufgerufen, wennx==2
als wahr ausgewertet wird. Dies wird als Kurzschluss bezeichnet .In solchen Fällen wird es nicht häufig verwendet, und Sie sollten Code wie diesen wirklich nicht schreiben. Ich ermutige diesen einfacheren Ansatz:
Sie sollten jederzeit lesbaren Code schreiben. Wenn Sie sich Sorgen über die Dateigröße machen, erstellen Sie einfach eine verkleinerte Version mit Hilfe eines der vielen JS-Kompressoren. (zB Googles Closure Compiler )
quelle
if (1 - 1 === 0) $('.woot').text('Woot!');
Ich benutze dieses Formular die ganze Zeit mit PHP, und jetzt, wo ich Coffeescript einnehme, verwende ich es auch in meinem Javascript.if x==2 && doSomething() || doSomethingElse()
doSomething() if x === 2
. Ich vermisse Ruby nicht, aber das vermisse ich.Was Sie haben, ist eine ziemlich ungewöhnliche Verwendung des ternären Operators . Normalerweise wird es als Ausdruck und nicht als Anweisung innerhalb einer anderen Operation verwendet, z.
Aus Gründen der Lesbarkeit (weil das, was Sie tun, ungewöhnlich ist) und weil es das "Sonstige" vermeidet, das Sie nicht wollen, würde ich vorschlagen:
quelle
Andere Option:
quelle
Wenn Sie das andere nicht tun, warum nicht:
quelle
Die Verwendung
null
ist für einen der Zweige eines ternären Ausdrucks in Ordnung. Und ein ternärer Ausdruck ist als Aussage in Javascript in Ordnung.Wenn Sie jedoch eine Prozedur aufrufen möchten, ist es aus Gründen des Stils klarer, dies mit if..else zu schreiben:
oder in Ihrem Fall
quelle
Winzige Ergänzung zu diesem sehr alten Thread ..
Wenn Sie einen Ausdruck in einer
for
/while
-Schleife mit einem ternären Operator auswerten und dies möchtencontinue
oder möchten,break
haben Sie ein Problem, da beidecontinue
&break
keine Ausdrücke sind , sondern Anweisungen ohne Wert.Dies wird produzieren
Uncaught SyntaxError: Unexpected token continue
Wenn Sie wirklich einen Einzeiler möchten, der eine Anweisung zurückgibt, können Sie stattdessen Folgendes verwenden:
quelle
Technisch gesehen funktioniert es , dort null oder 0 oder nur einen zufälligen Wert zu setzen (da Sie den Rückgabewert nicht verwenden). Warum verwenden Sie dieses Konstrukt jedoch anstelle des
if
Konstrukts? Es ist weniger offensichtlich, was Sie versuchen, wenn Sie Code auf diese Weise schreiben, da Sie möglicherweise Leute mit dem No-Op verwechseln (in Ihrem Fall null).quelle
Wahrscheinlich am kürzesten (basierend auf dem OP-Operator und seiner Priorität )
Code-Snippet anzeigen
quelle