これを行うと、変数bar = null;
の値に何かが割り当てられます。bar
に割り当てられていたものには影響しませんbar
。そのオブジェクトは存続し続け、他の参照がある場合は、その値に影響を与えずに存続します。
これを行うとき:
var foo = [5, 10];
var bar = foo;
3つのエンティティがあります。配列[5,10]
と、それぞれがその配列への参照を持つ2つの変数があります。配列を変更すると、両方の変数が同じ配列を指しているため、配列を参照する変数に関係なく、その変更が表示されます。
ただし、を設定すると、変数bar = null
に影響するだけでbar
、配列への参照がなくなります。がまだ指している配列にはまったく影響しませんfoo
。
実際、これを行った場合:
var foo = [5, 10];
var bar = foo;
bar = [20,30];
同じような結果になります。コードの2行目以降は、同じ配列bar
を指していますが、3行目以降は、新しい配列を指しており、元の配列のみを指しています。重要なのは、ポイントするオブジェクトを変更するために使用するのと、バーの値全体をのように再割り当てするのとでは違いがあることを理解することです。最初のケースでは、との両方が指す基になるオブジェクトが変更されます。2番目のケースでは、最初に指していた基になるオブジェクトはタッチされません。代わりに、新しいオブジェクトを指すように変更され、前のオブジェクトは変更されません。foo
bar
foo
bar
bar[0] = 1
bar = [20,30]
foo
bar
bar
bar