JavaScript上にこの簡単なコードがあります。JavaScriptの代入演算子
var a = 10;
var b = 20;
a=a+b-(b=a);
document.write("a = " + a + "</br> b = " + b);
誰かがこれらの変数が値を変更しなかったし、どのように代入演算子は、この場合には動作しますか、私に説明できますか?私は、最初のステップで、変数bがa:(b = a)からの数によって書き直されると思います。
JavaScript上にこの簡単なコードがあります。JavaScriptの代入演算子
var a = 10;
var b = 20;
a=a+b-(b=a);
document.write("a = " + a + "</br> b = " + b);
誰かがこれらの変数が値を変更しなかったし、どのように代入演算子は、この場合には動作しますか、私に説明できますか?私は、最初のステップで、変数bがa:(b = a)からの数によって書き直されると思います。
通常、左から右に評価されます。
割り当て式は、割り当てられた値を返します。
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
'a = 10 + 20-(b = a)。 //a = 10b = 20' 'a = 30 - (b = a); // a = 10 b = 20' 最初の式は大括弧で評価されると考えましたが、この例では最初のステップは '10 + 20'です。 – Alexander
@Alexanderはい、それはまさにあなたの誤解でした。 '(b = a)'が 'a + b 'の前に評価されていれば、実際に得られた結果は得られません。 – Bergi
@Alexander評価される最初の式は外側の代入で、次に '-'演算を評価しなければなりません。これは左のオペランド(合計)とその右オペランド(内部代入)を評価する必要があります。外側、左から右。 – Bergi
下記の簡単な説明。
1。私たちは初期値を割り当てています:
var a = 10;
var b = 20;
2。ここでは、a is equal to 10+20 - (10)
と言っています。従って、a
は20
に等しく、b
はa
の前にに割り当てられたので、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
、のは、この時に密接に見てみましょう:= A + B - (B = A)。
のが値で =(10 + 20)の変数を置き換えてみましょう - 表現の末尾に再定義されるまで(10)
これは、Bの== 20です。
具体的にお聞きしたいのは何ですか?代入演算子の仕組みを調べましたか? JSがあなたの第一言語ですか、あるいはあなたは他の言語の知識を持っていますか? – Carcigenicate
割り当て演算子は割り当てられた値を返すので、 'b = a'は' 10'を返します。 – undefined
aの値にa + bの値からaの値を割り当てたbの新しい値を引いた値が割り当てられています...私の答えは質問と同じくらい明確です;) – TinMonkey