1.2Types / Complex

複合型

複合型(`object`, `array`, `function`)にアクセスするときは、その値への参照を操作します。

これは「参照渡し」と呼ばれます。変数を別の変数に代入すると、データ本体ではなく、データが格納されているメモリ上の場所(アドレス)がコピーされます。そのため、複数の変数が同じデータを指し示すことになり、一方の変数を通じてデータを変更すると、もう一方の変数から見たデータも変更されてしまいます。この特性を理解しないと、意図せずデータを書き換えてしまうバグの原因になります。

❌ Bad
// 参照をコピーするため、元のオブジェクトも変更されてしまう
const foo = [1, 2];
const bar = foo;

bar[0] = 9;

console.log(foo[0], bar[0]); // => 9, 9
✅ Good
// 参照を扱うことを理解してコードを書く
const foo = [1, 2];
const bar = foo;

bar[0] = 9;

console.log(foo[0], bar[0]); // => 9, 9