JavaScript の質問用スレッド

このエントリーをはてなブックマークに追加
879( ´Д`)
>>877
参照型変数はC言語のポインタに近いものだと捉えると分かりやすくなるでしょうか。
要するに、基本型変数がメモリ上のデータを直接指し示しているのに対し、
参照型変数はグループ化されたメモリ上のデータ群を示すインデックスを格納しているわけです。
これを踏まえた上で考えると、例示されている命令群は次のような意味になります。

var a = [1@`2@`3];
//配列の実体がメモリ上に生成され、参照のためのインデックスが変数aに定義される。

var b = a;
//インデックスが変数aから変数bにコピーされる。

a[0] = 99;
//変数aの持つインデックスを利用し、配列の0番目の値が1から99に書き換えられる。

alert(b);
//変数bの持つインデックスをalertメソッドに引き渡す。
//JavaScriptエンジンの処理により、
//カンマ区切りの数値文字列がダイアログに表示される。

重要なのは、結局のところメモリ上に生成された配列はひとつだけで、
変数aと変数bが配列を参照するインデックスを共用しているということです。
言い換えると、変数aの示す配列と変数bの示す配列は同一であるわけです。