Es wurde klargestellt, dass der Verzicht auf geschweifte Klammern in einer einzeiligen if
Anweisung für die Wartbarkeit und Lesbarkeit nicht ideal ist , obwohl die Meinung dennoch der Meinung ist.
Aber was ist damit?
if (lemons) { document.write("foo gave me a bar"); }
Es ist noch komprimierter und wenn es erweitert wird, werden die geschweiften Klammern nicht vergessen. Gibt es offensichtliche Probleme, und wenn nicht, welche Überlegungen gibt es? Ich habe das Gefühl, dass es immer noch sehr gut lesbar ist, zumindest so viel wie ein ternärer Operator. Es scheint mir, dass ternäre Operatoren aufgrund der Lesbarkeit nicht so häufig vorgeschlagen werden, obwohl ich der Meinung bin, dass diese Schlussfolgerung nicht ganz so einstimmig ist.
Der böse Zwilling in mir möchte dies vorschlagen, obwohl die Syntax offensichtlich nicht dafür gedacht ist und wahrscheinlich nur eine schlechte Idee ist.
(syntax) ? document.write("My evil twin emerges"): "";
quelle
document.write("My evil twin emerges") if lemons
variable = (condition) ? true-value : false-value;
.) Viel Glück.Antworten:
Ich habe das Kurzschlussverhalten des
&&
Bedieners gesehen, mit dem dies erreicht wurde, obwohl es für Leute, die nicht daran gewöhnt sind, schwierig sein kann, es zu lesen oder es sogar als Anti-Muster zu bezeichnen:Persönlich verwende ich oft einzeilig
if
ohne Klammern, wie folgt :Wenn ich weitere Anweisungen hinzufügen muss, setze ich die Anweisungen in die nächste Zeile und füge Klammern hinzu. Da meine IDE automatisch einrückt, sind die Einwände gegen die Wartbarkeit gegen diese Vorgehensweise umstritten.
quelle
Ich benutze es so:
quelle
alert(lemons?"please give me a lemonade":"then give me a beer")
Sie können dieses Format verwenden, das üblicherweise in PHP verwendet wird:
quelle
lemon
.document.write(lemon ? "foo gave me a bar" : "if condition is FALSE");
:)Diese eine Zeile ist viel sauberer.
Ich bevorzuge das. hoffe es hilft jemandem
quelle
kann dies verwenden,
Erklärung: Wenn
lemons
vorhanden, dann gib mir einealert("please give me a lemonade")
else
alert("then give me a beer")
quelle
lemons? alert("please give me a fancy beer with a lemon wedge in it"): alert(please give me a beer")
FTFY// Ein weiteres einfaches Beispiel
quelle
var a = 11; alert(a === 10);
?alert(a === 10 ? "true" : "false")
alert(a===10)
Manu gesagt hat.Wie viele Leute gesagt haben, wenn Sie nach einer tatsächlichen 1 Zeile suchen, wenn dann:
Ist bevorzugt. Wenn du jedoch ein if / else machen willst, dann ist ternary dein Freund (und auch super cool):
EBENFALLS:
Ich habe jedoch ein sehr cooles Beispiel gesehen. Grüße an @ Peter-Oslson für &&
Schließlich ist es keine if-Anweisung, aber das Ausführen von Dingen in einer Schleife mit einer Map / Reduce oder Promise.resolve () macht auch Spaß. Ruft nach @brunettdan
quelle
Wie bereits erwähnt, können Sie Folgendes verwenden:
&& Stil
oder
Stil ohne Klammern
Kurzschlussrückführung
Wenn Sie jedoch die einzeilige
if
Anweisung verwenden möchten, um eine Funktion kurzzuschließen, müssen Sie die Version ohne Klammern wie folgt verwenden:wie
wird dir eine geben
SyntaxError: Unexpected keyword 'return'
quelle
lemons
(wenn es falsch ist) - Sie möchten nur "foo gab mir bar" zurückgeben, wennlemons
es wahr ist.Ich habe viele Antworten mit vielen Stimmen gesehen, die die Verwendung des ternären Operators befürworten. Das ternäre ist großartig, wenn a) Sie eine alternative Option haben und b) Sie einen ziemlich einfachen Wert aus einer einfachen Bedingung zurückgeben. Aber...
Die ursprüngliche Frage hatte keine Alternative, und der ternäre Operator mit nur einem (echten) Zweig zwingt Sie, eine konfektionierte Antwort zurückzugeben.
lemons ? "foo gave me a bar" : "who knows what you'll get back"
Ich denke, die häufigste Variante ist
lemons ? 'foo...' : ''
, und wie Sie aus dem Lesen der unzähligen Artikel für jede Sprache über wahr, falsch, wahr, falsch, null, null, leer, leer (mit unserem ohne?) Wissen, treten Sie ein ein Minenfeld (wenn auch ein gut dokumentiertes Minenfeld)Sobald ein Teil des Ternärs kompliziert wird, sind Sie mit einer expliziteren Form der Bedingung besser dran.
Ein langer Weg zu sagen, dass ich dafür stimme
if (lemons) "foo"
.quelle
Dies kann auch mit einer einzelnen Zeile mit
while
Schleifen erfolgen undif
so:Es funktioniert auch mit
while
Schleifen.quelle
Beispiel in Pfeilfunktionen:
In Versprechungen:
Andernfalls:
Wenn es nur eine einfache Bedingung ist, bevorzuge ich es, wenn (Wert) zu verwenden, wann immer dies möglich ist, weil das Wort if am Anfang der Anweisung mehr über das Geschehen aussagt als Klammern und Fragezeichen.
quelle
Sogar Zuweisungsoperationen können wir auch mit runden Klammern machen
quelle