Den zweiten Ausdruck bei Verwendung der Kurzschrift if-else auslassen

Kann ich die “if else” -Handschrift ohne das else schreiben?

var x=1; x==2 ? dosomething() : doNothingButContinueCode(); 

Ich habe festgestellt, dass ich null für die anderen Werke habe (aber ich habe keine Ahnung, warum oder ob das eine gute Idee ist).

Edit: Einige von euch scheinen verwirrt, warum ich das versuchen würde. Sei versichert, dass es nur aus Neugier ist. Ich mag es, mit JavaScript herumzuspielen.

   

    Dies ist auch eine Option:

     x==2 && dosomething(); 

    dosomething() wird nur aufgerufen, wenn x==2 als wahr ausgewertet wird. Dies wird als Kurzschluss bezeichnet .

    In solchen Fällen wird es nicht häufig verwendet und Sie sollten Code nicht wirklich so schreiben. Ich ermutige diesen einfacheren Ansatz:

     if(x==2) dosomething(); 

    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 Google Closure Compiler )

    Was Sie haben, ist eine ziemlich ungewöhnliche Verwendung des ternären Operators . Normalerweise wird es als Ausdruck und nicht als statement innerhalb einer anderen Operation verwendet, zB:

     var y = (x == 2 ? "yes" : "no"); 

    Also, für die Lesbarkeit (weil das, was Sie tun, ist ungewöhnlich), und weil es vermeidet das “sonst”, das Sie nicht wollen, würde ich vorschlagen:

     if (x==2) doSomething(); 

    Andere Option:

     x === 2 ? doSomething() : void 0; 

    Wenn Sie das nicht tun, warum tun Sie nicht:

     if (x==2) doSomething(); 

    Die Verwendung von null ist für einen der Zweige eines ternären Ausdrucks in Ordnung. Und ein ternärer Ausdruck ist gut als Aussage in Javascript.

    Wenn Sie jedoch eine Prozedur aufrufen möchten, ist es klarer, dies mit if..else zu schreiben:

     if (x==2) doSomething; else doSomethingElse 

    oder in deinem Fall

     if (x==2) doSomething; 

    Eine kleine Ergänzung zu diesem sehr alten Thread.

    Nehmen wir an, Sie befinden sich in einer for Schleife und müssen eine Variable für einen truthy/falsy Wert mit einem ternären Operator falsy Falls es falsy , wollen Sie continue – Sie werden ein Problem haben, weil Sie keinen Ausdruck zurückgeben . Sie geben stattdessen eine Aussage ohne Wert zurück.

    Dies erzeugt Uncaught SyntaxError: Unexpected token continue

      for (var i = 0; i < myArray.length; i++) { myArray[i].value ? alert('yay') : continue; } 

    Wenn Sie also eine statement zurückgeben und immer noch eine Zeile für Ihren Code verwenden möchten, obwohl dies auf den ersten Blick etwas merkwürdig erscheint und Sie möglicherweise nicht der strengen Sprachverwendung folgen, können Sie dies stattdessen tun:

      for (var i = 0; i < myArray.length; i++) { if (myArray[i].value) alert('yay') ; else continue; } 
    • PS - Dieser Code ist möglicherweise schwer zu lesen oder zu verstehen, daher wird es nicht immer die beste Option sein. Sag nur .. 🙂

    Technisch funktioniert das Setzen von null oder 0 oder nur irgendein zufälliger Wert (da Sie den Rückgabewert nicht verwenden). Warum verwenden Sie dieses Konstrukt anstelle des if Konstrukts? Es ist weniger offensichtlich, was Sie zu tun versuchen, wenn Sie Code auf diese Weise schreiben, da Sie die Leute mit dem No-Op (in Ihrem Fall null) verwechseln können.