&&
und ||
sind raschend starke in JavaScript zu einigen anderen Sprachen verglichen: Sie müssen nicht unbedingt einen boolean zurück.
&&
wertet seinen ersten Operanden aus, und wenn das der Wert falsy * ist, verwendet er diesen als Rückgabewert; Wenn der erste Operand truthy * auswertet, wertet &&
seinen zweiten Operanden aus und verwendet diesen als Ergebniswert. In Ihrem y == 1 && "anything"
, seit y == 1
ist true
(was natürlich truthy ist), ist das Ergebnis das Ergebnis der Auswertung "anything"
(die "anything"
ist). In Ihrem "anything" && y == 1
, "anything"
ist truthy, und so ist das Ergebnis das Ergebnis der Auswertung y == 1
(die true
ist).
||
funktioniert in ähnlicher Weise: Es wertet seinen ersten Operanden aus, und wenn das truthy ist, verwendet das als seinen Ergebniswert; ansonsten wertet ||
seinen zweiten Operanden uses den als Ergebniswert aus.
* falsy und truthy:
falsy - ein Wert, der false
nötigt, wenn sie als Boolesche verwendet. Die Falsy-Werte sind: ""
, 0
, NaN
, null
, undefined
und natürlich false
.
truthy - Ein Wert, der bei Verwendung als boolescher Wert zu true
wird. Jeder nicht-falsy Wert ist truthy, incl. "0"
(Null in Anführungszeichen), "false"
(false in Anführungszeichen), leere Funktionen, leere Arrays und leere Objekte.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators –
'&&' operator würde den letzten truthy-Wert oder false zurückgeben. Da "irgendetwas" wahr ist, würde der erste Ausdruck "alles" zurückgeben. Im zweiten Ausdruck wird zuerst 'y == 1' ausgewertet, was zu 'true' führt und daher wird – Rajesh
zurückgegeben. Sie erhalten verschiedene Ausgaben, weil Sie verschiedene Operationen ausführen. Die "Differenz" ist die Reihenfolge, in der Sie die Operationen ausführen. – David