Mit &&'s short-circuiting wie eine if-Anweisung?
Sah ich diese Zeile in der jQuery.form.js
source code:
g && $.event.trigger("ajaxComplete", [xhr, s]);
Mein Erster Gedanke war wtf????
Mein Nächster Gedanke war, ich kann mich nicht entscheiden, ob das hässlich oder elegant.
Ich bin kein Javascript-guru mit allen Mitteln meine Frage ist also 2-Fach. Zuerst möchte ich bestätigen, dass ich es richtig zu verstehen. Ist die obige Zeile entspricht:
if (g) {
$.event.trigger("ajaxComplete", [xhr, s]);
}
Und zweitens ist dieser common /akzeptierte Praxis in Javascript? Auf der einen Seite ist es kurz, aber auf der anderen kann es ein wenig kryptisch sein, wenn du es noch nicht gesehen haben, bevor.
- Wenn man bedenkt, dass diese Klammern sind auch nicht erforderlich, im zweiten Fall würde ich vote unübersichtlich und hässlich, obwohl ich bin kein JavaScript-guru entweder.
- Im Zusammenhang Ist JavaScript haben Kurzschluss-Auswertung?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, deine beiden Beispiele sind gleichwertig. Es arbeitet wie das in so ziemlich allen Sprachen, aber es ist eher Redewendungen, die in Javascript. Ich persönlich denke, es ist gut in manchen Situationen aber kann missbraucht werden, in anderen. Es ist definitiv kürzer, aber, was wichtig sein kann, zu minimieren, Javascript Ladezeiten.
Siehe auch Kann jemand erklären, wie John Resig ' s pretty.js JavaScript funktioniert?
Es ist standard, aber weder JSLint noch JSHint wie es:
Müssen Sie vorsichtig sein, da dieser Kurzschluss kann umgangen werden, wenn es eine
||
im bedingten:Um dies zu vermeiden, werden Sie sicher, dass die Gruppe die Bedingungen:
2*3+2 = 8
wenn2*(3+2) = 10
. Dies ist übrigens auch leicht zu übersehen...Ja, es ist äquivalent zu einem
if
wie du geschrieben hast. Es ist sicherlich keine ungewöhnliche Praxis. Ob es angenommen wird, ist davon abhängig, wer ist (oder nicht) zu tun, das zu akzeptieren...Ja, Sie verstehen es (in diesem Kontext); ja, es ist gängige Praxis in JavaScript.
bool
ansonsten bekommst du "&& operator kann angewendet werden, um Argumente von Typ 'bool' und '[unabhängig von der Art der 2. Hälfte zurück]`"if
Erklärung nicht etwas zurückzugeben. Es steuert den Ablauf der Ausführung.someBool && alert('hi');
dann das C# - äquivalent wäresomeBool && MessageBox.Show("hi");
die nicht kompiliert wird, aus mehreren Gründen, können Sie nicht && ein boolescher Wert, und eine leere, und auch Sie können nicht über ein && expression und wirf dann das Ergebnis.a = true;
dannif(a) {alert('something')};' the return value of that expression says
undefined` im Firebug.and
Betreiber, die in den meisten Sprachen. Die Frage ist speziell über, wenn Sie wegwerfen, das Ergebnis der das && und verwenden Sie es rein für die Nebenwirkungen. Ich dachte, das war klar, nur das allein als eine vollständige Erklärung ohne Rückgabe und ohne etwas zu tun, mit dem Ergebnis, das && aber vielleicht sollte ich deutlicher, was ich meinte.Standardmäßig wird der Auslöser einer jshint Warnung:
Aber ich persönlich bevorzuge die Kurzschluss-version, sieht es eher deklarativen und hat "weniger Steuern Logik", könnte ein Missverständnis sein, obwohl.