JavaScriptにおけるオブジェクトの参照渡し
配列とオブジェクトは、他のプリミティブデータ型とはいくつか異なる点があります。 その違いは、配列を格納する変数が実際には配列自体を含んでいるのではなく、 単にそれに参照しているだけだということです。
実際には、これはオブジェクトを別の変数に代入すると、 両方の変数が同じオブジェクトを参照することを意味します。 実際に試してみましょう。 次のようなオブジェクトがあるとします:
let obj1 = {a: 1, b: 2, c: 3};
このオブジェクトをある変数から別の変数に代入します:
let obj2 = obj1;
変数の1つを変更します:
obj2.a = '!';
結果として、変更はもう一方の変数でも確認できます:
console.log(obj1); // {a: '!', b: 2, c: 3}
コードを実行せずに、コンソールに何が出力されるか決定してください:
let arr1 = [1, 2, 3];
let arr2 = arr1;
arr1[0] = 'a';
console.log(arr2);
コードを実行せずに、コンソールに何が出力されるか決定してください:
let arr1 = [1, 2, 3];
let arr2 = arr1;
arr1[0] = 'a';
arr2[1] = 'b';
console.log(arr1);
コードを実行せずに、コンソールに何が出力されるか決定してください:
let arr1 = [1, 2, 3];
let arr2 = arr1;
arr1[0] = 'a';
arr2[0] = 'b';
console.log(arr2);