2016-11-25 12 views
6

Manchmal im Internet sehe ich eine Syntax, die mir fremd ist. Etwas wie:Javascript "Gleiche Reihenfolge" Bedeutung

console.log = console.error = console.info = console.debug = console.warn = console.trace = function() {} 

Wie funktioniert diese "gleiche" Sequenz?

Danke.

Antwort

5

Ein Zuweisungsoperator weist seinem linken Operanden einen Wert zu, der auf dem Wert seines rechten Operanden basiert. Betrachten

:

a = b = c = d = 5; 

Der Ausdruck rechts aufgelöst wird so nach links:

d = 5 und c = d (das ist 5), b = c (5) und so weiter.

In Ihrem Beispiel werden diese Konsolenmethoden alle als leere Funktion definiert.


Siehe: MDN: Assignment Operators für weitere Informationen.

5

Bei Zuweisungen werden die Vorgänge von rechts nach links aufgelöst. Also wird der am weitesten rechts liegende Wert in alle vorhergehenden Variablen eingefügt.

1

Was Sie beschreiben, kann leicht durch Analogie mit einem einfacheren Beispiel erläutert:

// Normal variable assignment 
 
var a, b; 
 
a = 15; 
 
b = 15; 
 
console.log("a: "+a+" , b: "+b); 
 
// Assing the same value to two variables 
 
var c, d; 
 
c = d = 15; 
 
console.log("c: "+c+" , d: "+d); 
 
// Assign the same value to two variables and make it a function 
 
var e, f; 
 
e = f = function(){ console.log("Hi!"); }; 
 
// Call both of the variables' functions 
 
e(); f();

von Variablen Ab a und b, Sie gehen dann zu c und d, die die gleiche gegeben Wert. Der Vorteil hierbei ist, dass Sie zwei Variablen den gleichen Wert zuweisen können und der Ausdruck von rechts nach links ausgewertet wird, so dass die Werte der beiden Variablen getrennt zugewiesen werden. Dies bedeutet jedoch nicht, dass das Ändern eines anderen auch den anderen ändert. Schließlich, was passiert mit e und f. Diesen wird statt eines Wertes eine Funktion zugewiesen, so dass Sie sie dann aufrufen können, als wären sie Funktionen.

Kurzversion: Ausdruck wird von rechts nach links aufgelöst. Die Zuweisung erfolgt nach Wert, nicht nach Referenz, was bedeutet, dass die Änderung eines Wertes der Variablen die anderen nicht beeinflusst. Wenn Sie schließlich Ihren Variablen eine Funktion zuweisen, können Sie deren Namen verwenden, um die Funktion aufzurufen, die ihr Wert ist.

Verwandte Themen