JavaScript Variabler Fallback

8
___ answer9586409 ___

Dieser Code entspricht

%Vor%

Zwei Eigenschaften der Sprache werden verwendet:

  1. Die Verknüpfung Berechnung von booleschen Ausdrücken (beachten Sie %code% . Wenn %code% ist %code% , dann wird %code% nicht ausgewertet). Wenn Sie also %code% und %code% einem Objekt zuweisen, das in %code% umgewandelt werden kann, wird %code% nicht ausgewertet.
  2. Die Zuweisungsanweisung wird zum letzten zugewiesenen Wert ausgewertet (um %code% zu aktivieren)

Die Klammern sind notwendig, um diese Interpretation zu vermeiden:

%Vor%

(was ein Fehler ist).

    
___ answer9586348 ___

Ihre Vermutung ist richtig. Dies ist eine gängige Methode, um "Standardwerte" für Variablen in JavaScript zu deklarieren.

%Vor%

Dies funktioniert wie folgt: In JavaScript ist eine undefinierte Variable falsy, was bedeutet, dass in jeder booleschen Vergleichsoperation %code% ausgewertet wird. Sie können dann den OR-Operator verwenden, um zwei Werte zu kombinieren, und es wird der erste Wert zurückgegeben, der als %code% ausgewertet wird.

    
___ qstnhdr ___ JavaScript Variabler Fallback ___ tag123javascript ___ JavaScript (nicht zu verwechseln mit Java) ist eine dynamische Sprache mit mehreren Paradigmen auf hoher Ebene, die sowohl für das clientseitige als auch für das serverseitige Scripting verwendet wird. Verwenden Sie dieses Tag für Fragen zu ECMAScript und seinen verschiedenen Dialekten / Implementierungen (außer ActionScript und Google-Apps-Script). ___ tag123variables ___ DAS IST AMBIGUOUS; VERWENDEN SIE SPRACHSCHRIFTEN, WENN SIE ANWENDBAR SIND. Eine Variable ist ein benannter Datenspeicherort im Speicher. Ein Computerprogramm kann unter Verwendung von Variablen Zahlen, Text, Binärdaten oder eine Kombination dieser Datentypen speichern. Sie können im Programm weitergegeben werden. ___ answer9586337 ___

%code% oder 'logisches ODER' hat eine höhere Priorität als der Zuweisungsoperator %code% , daher sind die Klammern notwendig, um sicherzustellen, dass dieses Idiom in der richtigen Reihenfolge ausgewertet wird

Die andere Sache, auf die Sie achten sollten, ist, dass viele Sprachen, einschließlich Javascript, kurz anbieten -Circuit-Auswertung von Booleschen Operatoren wie AND und OR. Wenn der erste Operand eines logischen ODER-Wertes wahr ist, muss der zweite Operand nicht ausgewertet werden, da dies für das Ergebnis keinen Unterschied macht.

Verstehen Sie dies, und Sie werden sehen, dass dies keine spezielle Zuweisungssyntax ist, sondern ein Idiom oder Muster, das ein Sprachfeature ausnutzt, um eine kompaktere Darstellung einer Idee bereitzustellen.

    
___ tag123fallback ___ Ein Fallback ist ein Entwurfsmuster, das in Situationen nützlich ist, in denen bestimmte erweiterte Funktionen nur verwendet werden können, wenn bestimmte Bedingungen erfüllt sind. Wenn die Bedingungen nicht erfüllt werden können, greift der Algorithmus auf die sogenannte Fallback-Funktion zurück, die das Ziel mit weniger ausgeklügelten Methoden erreicht. ___ answer9586437 ___

Sie haben recht mit Ihrer ersten Schätzung. Dies ist ein gängiges Muster für die Initialisierung von Javascript-Namespaces. Es dient dazu, ein vorheriges Objekt mit dem gleichen Namen nicht zu überschreiben. Die meisten populären Bibliotheken werden etwas ähnliches tun, um ihre Namespace-Objekte zu erstellen.

Die Klammer ist da, damit die Ausdrücke in der richtigen Reihenfolge ausgewertet werden.

    
___
thugsb 06.03.2012, 15:07
quelle

4 Antworten

8

Dieser Code entspricht

%Vor%

Zwei Eigenschaften der Sprache werden verwendet:

  1. Die Verknüpfung Berechnung von booleschen Ausdrücken (beachten Sie a || b . Wenn a ist true , dann wird b nicht ausgewertet). Wenn Sie also var v = a || b; und a einem Objekt zuweisen, das in true umgewandelt werden kann, wird b nicht ausgewertet.
  2. Die Zuweisungsanweisung wird zum letzten zugewiesenen Wert ausgewertet (um var a = b = c; zu aktivieren)

Die Klammern sind notwendig, um diese Interpretation zu vermeiden:

%Vor%

(was ein Fehler ist).

    
Alexander Pavlov 06.03.2012, 15:14
quelle
5

Ihre Vermutung ist richtig. Dies ist eine gängige Methode, um "Standardwerte" für Variablen in JavaScript zu deklarieren.

%Vor%

Dies funktioniert wie folgt: In JavaScript ist eine undefinierte Variable falsy, was bedeutet, dass in jeder booleschen Vergleichsoperation false ausgewertet wird. Sie können dann den OR-Operator verwenden, um zwei Werte zu kombinieren, und es wird der erste Wert zurückgegeben, der als true ausgewertet wird.

    
Alex Turpin 06.03.2012 15:11
quelle
1

Sie haben recht mit Ihrer ersten Schätzung. Dies ist ein gängiges Muster für die Initialisierung von Javascript-Namespaces. Es dient dazu, ein vorheriges Objekt mit dem gleichen Namen nicht zu überschreiben. Die meisten populären Bibliotheken werden etwas ähnliches tun, um ihre Namespace-Objekte zu erstellen.

Die Klammer ist da, damit die Ausdrücke in der richtigen Reihenfolge ausgewertet werden.

    
joidegn 06.03.2012 15:16
quelle
1

|| oder 'logisches ODER' hat eine höhere Priorität als der Zuweisungsoperator = , daher sind die Klammern notwendig, um sicherzustellen, dass dieses Idiom in der richtigen Reihenfolge ausgewertet wird

Die andere Sache, auf die Sie achten sollten, ist, dass viele Sprachen, einschließlich Javascript, kurz anbieten -Circuit-Auswertung von Booleschen Operatoren wie AND und OR. Wenn der erste Operand eines logischen ODER-Wertes wahr ist, muss der zweite Operand nicht ausgewertet werden, da dies für das Ergebnis keinen Unterschied macht.

Verstehen Sie dies, und Sie werden sehen, dass dies keine spezielle Zuweisungssyntax ist, sondern ein Idiom oder Muster, das ein Sprachfeature ausnutzt, um eine kompaktere Darstellung einer Idee bereitzustellen.

    
Paul Dixon 06.03.2012 15:11
quelle

Tags und Links