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")
.
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.
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.
&&
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).
Tags und Links javascript logic logical-operators