2017-08-22 1 views
0

J'ai ce code simple sur le JavaScript.L'opérateur d'affectation en JavaScript

var a = 10; 
 
var b = 20; 
 

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

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

Quelqu'un peut-il me expliquer, comment ces variables changent les valeurs et comment est l'opérateur d'affectation travaille dans ce cas? Je pense que, sur la première étape, la variable b est réécrite par le nombre de a: (b = a).

+1

De quoi parlez-vous précisément? Avez-vous regardé comment fonctionnent les opérateurs d'affectation? JS est votre langue maternelle, ou avez-vous des connaissances d'autres langues? – Carcigenicate

+0

L'opérateur d'affectation renvoie la valeur affectée, donc 'b = a' renvoie' 10'. – undefined

+0

a reçoit la valeur de a + b moins la nouvelle valeur de b qui vient de recevoir la valeur d'un ... Je pense que la réponse est aussi claire que la question;) – TinMonkey

Répondre

2

Il est évalué extérieurement, de gauche à droite, comme d'habitude.
L'expression d'affectation renvoie la valeur affectée.

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' Je pensais que la première expression serait évaluée entre parenthèses, mais dans cet exemple, la première étape est '10 + 20'. – Alexander

+0

@Alexander Oui, c'était exactement votre idée fausse. Si '(b = a)' aurait été évalué avant 'a + b', vous n'obtiendrez pas le résultat que vous obtenez réellement. – Bergi

+0

@Alexander La première expression évaluée est l'assignation externe, qui doit alors évaluer l'opération '-', qui doit alors évaluer son opérande gauche (la somme) et ensuite son opérande droit (l'assignation interne). De l'extérieur vers l'intérieur, de gauche à droite. – Bergi

1

Des explications simples ci-dessous.

1. Nous assignons nos valeurs initiales:

var a = 10; 
var b = 20; 

2. Ici, nous disons a is equal to 10+20 - (10). Par conséquent a est maintenant égal à 20 et b est égal à 10 car il a été affecté à être aavant nous avons attribué a nouvelle valeur.

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

3. Résultat:

var a = 10; 
 
var b = 20; 
 

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

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

0

Eh bien, regardons de près ceci: a = a + b - (b = a);

Remplaçons les variables avec des valeurs a = (10 + 20) - (10)

C'est parce que B == 20 jusqu'à redéfinie à la fin de l'expression.