Warum ergibt 2 && 3 3 (javascript)? [Duplikat]

8

Wenn ich die Browser-Konsole eintippe:

%Vor%

es ergibt sich immer mit der zweiten Zahl (in diesem Fall 3):

%Vor%

Kann mir jemand erklären warum?

    
mrmnmly 15.05.2015, 06:32
quelle

3 Antworten

14

Wenn die linke Seite von && als falscher Wert ausgewertet wird, wird der gesamte Ausdruck als linke Seite ausgewertet.

Sonst wird es als die rechte Seite ausgewertet.

2 ist ein wahrer Wert, also 2 && 3 ist 3 .

Zum Vergleich: console.log(0 && 1) und console.log(false && "something") .

    
Quentin 15.05.2015, 06:33
quelle
9

Die & amp; & amp; logischer Operator gibt den letzten Wert zurück, wenn alle anderen Werte truthy sind, sonst gibt es den ersten nicht truthigen Wert zurück.

Also in Ihrem Fall, da 2 truthy ist, wird es 3 auswerten und da das truthy ist, wird es zurückgegeben.

Gleicher Weg 2 && 0 && 4 gibt 0 zurück, da es kein truthy Wert ist.

Logischer Operator

  

Logische Operatoren werden normalerweise mit booleschen (logischen) Werten verwendet.   Wenn sie sind, geben sie einen booleschen Wert zurück. Die & amp; & amp; & amp; und ||   Operatoren geben tatsächlich den Wert eines der angegebenen Operanden zurück,   Wenn diese Operatoren mit nicht-booleschen Werten verwendet werden, können sie dies tun   gibt einen nicht-booleschen Wert zurück.

    
Arun P Johny 15.05.2015 06:34
quelle
5

&& muss alle Ausdrücke auswerten. 2 && 3 wird zuerst die "Wahrhaftigkeit" von 2 auswerten, was ein echter Wert ist, aber dann muss auch 3 ausgewertet werden. Der zuletzt ausgewertete Wert wird zurückgegeben. Wenn mindestens ein Wert nicht truthig ist, wird stattdessen der erste derartige Wert zurückgegeben.

|| gibt andererseits den ersten truthy Ausdruck oder die letzte Nicht-truthy zurück, wenn es keine truthigen Ausdrücke gibt.

Der Grund, warum && den letzten möglichen Wert zurückgibt, ist, dass es einfach alle Ausdrücke überprüfen muss, um ein Ergebnis zurückzugeben. || muss das nicht tun. Wenn der erste Ausdruck für || wahr ist, ignoriert er alle weiteren. Genauso, wenn der erste Ausdruck für && falsch ist, ignoriert er alle weiteren (siehe Kurzschlüsse in logischen Operatoren).

    
Xufox 15.05.2015 06:41
quelle