Javascript: if (arg1, arg2, arg3 ...) Aussage

8

Ich bin einfach auf die Tatsache gestoßen, dass eine if -Anweisung mehrere Parameter in javascript haben kann:

%Vor%

Wie gut wird das unterstützt?

ps. Ich verstehe, dass dies der Verwendung von && ähnlich ist, aber das ist interessant und ein google konnte keine Antwort liefern.

    
Ross 25.08.2011, 20:37
quelle

4 Antworten

14

Wenn Anweisungen nicht "mehrere Parameter" haben dürfen. Was Sie beobachtet haben, ist die Verwendung des Kommaoperators .

  

Der Kommaoperator wertet beide Operanden aus (von links nach rechts)   und gibt den Wert des zweiten Operanden zurück.

Jetzt sehen wir, warum (true, true, false) nichts protokolliert, während (true, false, true) wird. Als Nebenbemerkung wird diese Syntax ubiquitär unterstützt (sollte aber fast nie verwendet werden).

    
David Titarenco 25.08.2011, 20:40
quelle
6

Das ist kein Feature der if -Anweisung, es ist der Operator , .

Sie können Ausdrücke mit einem Komma trennen, und jeder Ausdruck wird ausgewertet, aber nur der letzte wird als Wert für die gesamten Ausdrücke verwendet.

In Ihrem Beispiel ist es ziemlich nutzlos, aber manchmal möchten Sie, dass ein Ausdruck auf seine Nebenwirkungen hin bewertet wird. Beispiel:

%Vor%     
Guffa 25.08.2011 20:41
quelle
3

Es ist nicht ähnlich zu && (versuche, false auf den ersten oder zweiten Platz zu verschieben), es hat nichts mit if zu tun und wird genauso gut unterstützt wie Funktionsliterale, d. h. absolut universell. Was Sie gefunden haben, ist der von C geerbte Komma-Operator, der die Ausdrücke von links nach rechts ausgewertet hat (eigentlich sind es immer zwei Ausdrücke und mehr konzeptionell zur Verschachtelung wie a + b + c führt) und verwirft alle außer dem letzten Ergebnis. Das letzte Ergebnis wird zum Ergebnis des gesamten Ausdrucks.

    
delnan 25.08.2011 20:41
quelle
1

Funktioniert in IE7, also denke ich, das wird gut unterstützt.

    
Mrchief 25.08.2011 20:41
quelle

Tags und Links