2015-05-15 14 views

Antwort

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 echter Wert, also 2 && 3 ist 3.

Zum Vergleich, versuchen Sie console.log(0 && 1) und console.log(false && "something").

9

Der && logical operator gibt den letzten Wert zurück, wenn alle anderen Werte truthy sind, sonst gibt es den ersten nicht truthy Wert zurück.

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

Gleicher Weg 2 && 0 && 4 wird 0 zurückgeben, da es ein nicht truthy Wert ist.

Logical Operator

Logische Operatoren werden in der Regel mit Boolean (logische) Werte verwendet. Wenn sie sind, geben sie einen booleschen Wert zurück. Die & & und || Operatoren geben den Wert eines der angegebenen Operanden zurück. Wenn diese Operatoren mit nicht booleschen Werten verwendet werden, können sie einen nicht booleschen Wert zurückgeben.

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.

|| auf der anderen Seite gibt die erste truthy Ausdruck oder die letzte nicht-truthy, wenn es keine truthy Ausdrücke gibt.

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