2017-08-22 3 views
0

Ich habe diesen einfachen Code auf dem JavaScript.Der Zuweisungsoperator in JavaScript

var a = 10; 
 
var b = 20; 
 

 
a=a+b-(b=a); 
 

 
document.write("a = " + a + "</br> b = " + b);

Kann mir jemand erklären, wie haben diese Variablen die Werte ändern, und wie ist der Zuweisungsoperator in diesem Fall funktioniert? Ich denke, dass im ersten Schritt die Variable b nach Zahl von a umgeschrieben wird: (b = a).

+1

Worum genau bitten Sie? Haben Sie nachgeschaut, wie Zuordnungsoperatoren arbeiten? Ist JS Ihre Muttersprache oder haben Sie Kenntnisse in anderen Sprachen? – Carcigenicate

+0

Der Zuweisungsoperator gibt den zugewiesenen Wert zurück, so dass "b = a" den Wert "10" zurückgibt. – undefined

+0

a wird der Wert von a + b abzüglich des neuen Wertes von b zugewiesen, dem gerade der Wert von a zugewiesen wurde ... Ich denke, diese Antwort ist ebenso klar wie die Frage;) – TinMonkey

Antwort

2

Es wird von außen nach innen ausgewertet, von links nach rechts, wie gewöhnlich.
Der Zuweisungsausdruck gibt den zugewiesenen Wert zurück.

a = a + b - (b = a); // a=10 b=20 
a = 10 + b -(b = a); // a=10 b=20 
a = 10 + 20 - (b = a); // a=10 b=20 
a = 30 - (b = a);  // a=10 b=20 
a = 30 - (b = 10);  // a=10 b=20 
a = 30 - (10);   // a=10 b=10 
a = 30 - 10;   // a=10 b=10 
a = 20;     // a=10 b=10 
20;      // a=20 b=10 
+0

'a = 10 + 20- (b = a); // a = 10 b = 20 ' 'a = 30 - (b = a); // a = 10 b = 20' Ich dachte, dass der erste Ausdruck in Klammern ausgewertet wird, aber in diesem Beispiel ist der erste Schritt '10 + 20'. – Alexander

+0

@Alexander Ja, das war genau dein Missverständnis. Wenn '(b = a)' vor 'a + b' ausgewertet worden wäre, würden Sie nicht das Ergebnis bekommen, das Sie tatsächlich bekommen. – Bergi

+0

@Alexander Der erste Ausdruck, der ausgewertet wird, ist die äußere Zuweisung, die dann die '-'-Operation auswerten muss, die dann ihren linken Operanden (die Summe) und danach ihren rechten Operanden (die innere Zuweisung) auswerten muss. Von außen nach innen, von links nach rechts. – Bergi

1

Einfache Erklärungen unten.

1. Wir weisen unsere Anfangswerte zu:

var a = 10; 
var b = 20; 

2. Hier sagen wir a is equal to 10+20 - (10). Daher ist a jetzt gleich 20 und b ist gleich 10, da es avor zugewiesen wurde a 's neuen Wert zugeordnet.

a=a+b-(b=a); 

3. Ergebnis:

var a = 10; 
 
var b = 20; 
 

 
a = a + b - (b = a); 
 

 
console.log("a = " + a); // a = 20 
 
console.log("b = " + b); // b = 10

0

Nun, schaut sie sich genau an dieser: a = a + b - (b = a);

die Variablen mit Werten a = (10 + 20) ersetzen lassen - (10)

Dies liegt daran, B == 20 bis am Ende des Ausdrucks neu definiert.