Was ist das in javascript: "var var1 = var1 || [] "

8

Ich möchte nur mein Kern-JavaScript-Wissen erweitern.

Manchmal sehe ich diese Aussage, aber ich weiß nicht, was sie tut:

%Vor%

Was bedeutet es und / oder wofür ist es und wie benutzen Sie es?

Danke.

    
Shaoz 26.11.2010, 00:37
quelle

8 Antworten

3

Die logischen Operatoren in JavaScript bewerten tatsächlich eines der beiden Objekte. Wenn Sie a || b verwenden, wird b ausgewertet, wenn a falsch ist, oder a , wenn a wahr ist. Daher ist a || [] a , wenn a ein Wert ist, der wahr ist, oder [] , wenn a ein Wert ist, der falsch ist.

Es ist viel offensichtlicher, if (!a) { a = [] };

zu verwenden     
Rosh Oxymoron 26.11.2010, 00:45
quelle
11

Es sieht im Grunde aus, ob eine Variable var1 bereits existiert und "truthy" ist. Wenn dies der Fall ist, weist es der lokalen var1 -Variable ihren Wert zu; Wenn nicht, wird ihm ein leeres Array zugewiesen.

Das funktioniert, weil der JavaScript-Operator || den Wert des ersten truthy-Operanden zurückgibt, oder den letzten, wenn keiner truthig ist. var1 || var2 gibt var1 zurück, wenn es truthy ist, oder var2 , sonst.

Hier sind einige Beispiele:

%Vor%

Werte, die nicht "truthy" sind: false , 0 , undefined , null , "" (leere Zeichenfolge) und NaN . Leere Arrays und Objekte gelten in JavaScript als truthy, anders als in einigen anderen Sprachen.

    
Sasha Chedygov 26.11.2010 00:41
quelle
7

Er weist var1 ein leeres Array zu, wenn die boolesche Darstellung falsch ist (zum Beispiel wurde es nicht initialisiert).

    
cambraca 26.11.2010 00:40
quelle
5

Grundsätzlich, wenn var1 ist NULL oder false , var1 wird auf eine leere array gesetzt.

    
Zlatev 26.11.2010 00:41
quelle
3

Javascript oder (||) funktioniert ein bisschen anders als einige andere Sprachen, es gibt den ersten "truthy" -Wert statt eines booleschen Wertes zurück. Dies wird in diesem Fall verwendet, um zu sagen "Setze den Wert von var1 auf var1 , aber wenn dieser Wert" falsey "ist, setze ihn auf [] ".

Dies wird oft verwendet, um einen "Standard" -Wert für eine Variable festzulegen, die bereits gesetzt sein kann oder nicht, wie zum Beispiel ein Argument für eine Funktion.

    
Brenton Alker 26.11.2010 00:42
quelle
1

Der Operator || wertet den ersten seiner Operanden aus, der "truthy" ist.

[] ist ein leeres Array. ( [ "Hi!" ] ist ein Array mit einer Zeichenfolge)

Daher wird der Ausdruck x || [] zu x ausgewertet, wenn es "truthy" ist, oder ein leeres Array, wenn dies nicht der Fall ist.

Dadurch kann der Parameter var1 optional sein.

    
SLaks 26.11.2010 00:40
quelle
1

Die Anweisung weist var1 ein leeres Array zu.

längere Antwort und Erklärung:

Dies passiert, weil var1 zu diesem Zeitpunkt nicht initialisiert ist. Nicht initialisiert ist ein falscher Wert.

nimm diese Aussage:

%Vor%

Wenn var1 nicht initialisiert wird, wird es zu einem leeren Array, wenn es ein leeres Array ist passiert nichts, da es einem leeren Array zugewiesen ist, wenn var1 false , null oder irgendein anderer Wert, dass JavaScript Dinge wie falsch , es wird ein leeres Array, wenn var1 ist alles andere Wert, nichts passiert, da es sich selbst zugewiesen ist. (danke pst für den Link).

Kurz gesagt, es ist eine dumme Aussage, die weder lesbar noch nützlich ist, aber Sie sind schlau, wenn Sie wissen wollen, was es bedeutet. :)

    
Gordon Gustafson 26.11.2010 00:45
quelle
1

Während dies als "eine dumme Aussage" herausgestellt wurde, präsentiere ich die folgenden zwei Zähler:

(Nur um die Leute auf Trab zu halten und einige der "feineren Details" von JavaScript zu verstärken.)

1)

var ist die Variable ist bereits local . ZB

%Vor%

2)

var ist eine funktionsweite Annotation (sie wird nach oben gehisst) und keine Deklaration am Ort der Verwendung.

%Vor%

Ich mag keinen Code wie der vorhergehende, aber ...

Wegen des Hochziehens und erlaubter Re-Deklarationen hat der Code im Post diese Semantik:

%Vor%

Bearbeiten Ich bin mir nicht bewusst, wie "strenger Modus" in Ed.5 das obige beeinflusst.

    
user166390 26.11.2010 00:52
quelle

Tags und Links