2017-04-03 5 views
-2

Ich bekomme verschiedene Ausgänge für den folgenden Code. Bitte sagen Sie mir den UnterschiedWarum bekomme ich verschiedene Antworten für die folgenden

 var y = 1; 
     var c = "anything"; 
     var d = 5; 
     console.log(y == 1 && "anything"); // Output is anything 
     console.log("anything" && y == 1); // Output is true 
+1

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators –

+1

'&&' 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

+1

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

Antwort

2

&& 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.

+0

Sie können auch docs: http://stackoverflow.com/documentation/javascript/208/comparison-operations/1587/short-circuiting-in-boole-operators#t=201704031204287011226 – Rajesh

Verwandte Themen