Wenn ich in Browser-Konsole eingeben:Warum ergibt 2 && 3 3 (Javascript)?
console.log(2 && 3)
es ergibt sich immer mit der zweiten Nummer (in diesem Fall 3):
3
Kann jemand mir erklären, warum?
Wenn ich in Browser-Konsole eingeben:Warum ergibt 2 && 3 3 (Javascript)?
console.log(2 && 3)
es ergibt sich immer mit der zweiten Nummer (in diesem Fall 3):
3
Kann jemand mir erklären, warum?
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")
.
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.
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.
&&
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).