2017-08-22 1 views
0

JavaScript上にこの簡単なコードがあります。JavaScriptの代入演算子

var a = 10; 
 
var b = 20; 
 

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

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

誰かがこれらの変数が値を変更しなかったし、どのように代入演算子は、この場合には動作しますか、私に説明できますか?私は、最初のステップで、変数bがa:(b = a)からの数によって書き直されると思います。

+1

具体的にお聞きしたいのは何ですか?代入演算子の仕組みを調べましたか? JSがあなたの第一言語ですか、あるいはあなたは他の言語の知識を持っていますか? – Carcigenicate

+0

割り当て演算子は割り当てられた値を返すので、 'b = a'は' 10'を返します。 – undefined

+0

aの値にa + bの値からaの値を割り当てたbの新しい値を引いた値が割り当てられています...私の答えは質問と同じくらい明確です;) – TinMonkey

答えて

2

通常、左から右に評価されます。
割り当て式は、割り当てられた値を返します。

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 = 10b = 20' 'a = 30 - (b = a); // a = 10 b = 20' 最初の式は大括弧で評価されると考えましたが、この例では最初のステップは '10 + 20'です。 – Alexander

+0

@Alexanderはい、それはまさにあなたの誤解でした。 '(b = a)'が 'a + b 'の前に評価されていれば、実際に得られた結果は得られません。 – Bergi

+0

@Alexander評価される最初の式は外側の代入で、次に '-'演算を評価しなければなりません。これは左のオペランド(合計)とその右オペランド(内部代入)を評価する必要があります。外側、左から右。 – Bergi

1

下記の簡単な説明。

1。私たちは初期値を割り当てています:

var a = 10; 
var b = 20; 

2。ここでは、a is equal to 10+20 - (10)と言っています。従って、a20に等しく、baの前にに割り当てられたので、aの新しい値に割り当てられているので、10に等しい。

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

3。結果:

まあ

var a = 10; 
 
var b = 20; 
 

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

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

0

、のは、この時に密接に見てみましょう:= A + B - (B = A)。

のが値で =(10 + 20)の変数を置き換えてみましょう - 表現の末尾に再定義されるまで(10)

これは、Bの== 20です。

関連する問題