-5

Javascript 参照は、オブジェクトに対して異なる動作をします。これを以下のコードで説明してください。

javascript 変数では、x=5 の x と y を想定します。x を y に代入し、y=6 の値を変更しています。x はまだ x=5 のままです。しかし、javascript オブジェクトでは、x と y を仮定します。ここで、x を y に代入し、y を ya=6 に変更すると、x も xa=6 に変更され ます。

変数を検討してください。

var x,y;
x=5;
console.log(x);//x is 5
y=x;
y=6;
console.log(x);//x is still 5
console.log(y);//y is 6

出力

x:5
x:5
y:6

しかし、オブジェクトでは

var x={},y={};
x.a=5;
console.log(x);// x is {a:5}
x=y;
y.a=6;
console.log(x);// x is {a:6} changing y, x is also changed
console.log(y);// y is {y:6}

出力

x:{a:5}
x:{a:6}
y:{a:6}
4

1 に答える 1

2
y = x;
y = 6;

ここでは、 の値を に代入してx から yを変更していyます。新しい値が割り当てられることはないxため、これは変更されません。x

var x = {}, y = {};

ここでは、2 つの新しいオブジェクトを作成し、それらのアドレスをx およびに割り当てますy。2 つの変数はポインターのように動作し、オブジェクトの値自体を保持するのではなく、アドレスのみを保持します。したがって、x.a = 55 を割り当てるのではなく、 によってのみ参照されるオブジェクトに追加されxた新しいプロパティに割り当てます。ax

x = y;
y.a = 6;

そして、ここで実際に前のオブジェクトの参照を上書きし、現在x参照されているオブジェクトを指し示しますy。現在、同じオブジェクトxy指しているため、for を介して行われた変更もy反映さxれます。

于 2013-08-18T02:03:41.867 に答える