目次
こんにちは、Benと申します!今回は javascript の 「値渡し」と「参照渡し」 について紹介したいと思います!
値渡し ( pass by value ) とは
JavaScriptでは、基本データ型(数字、文字列、ブール値など)は値渡しで伝えられます。これは、変数から別の変数へ値を割り当てるとき、値そのものがコピーされるということです。以下の例を見てください:
let a = 1;
let b = 2;
let c = b; // bの値がcにコピーされます。
b = 5; // bの値を変更してもcは影響を受けません。
console.log(c); // 出力: 2
この例では、b
の値(2)が c
に割り当てられた後、b
の値を変更しても c
の値は変わらず、2のままです。これは値渡しの典型的な例で、割り当てられた値が独立しているため、元の値の変更が割り当てた変数に影響を与えません。
参照渡し ( pass by reference ) とは
参照渡しは、特にオブジェクトや配列のような複合データ型に対して使用されます。変数はデータの実体ではなく、データが格納されているメモリのアドレスを指します。そのため、一つのオブジェクトへの参照を別の変数に割り当てると、その二つの変数は同じオブジェクトを指すことになります。以下に例を示します:
let obj1 = { value: 1 };
let obj2 = obj1; // obj1の参照がobj2にコピーされます。
obj1.value = 2; // obj1を通じて値を変更すると、
console.log(obj1.value); // 出力: 2
console.log(obj2.value); // 出力: 2 となり、obj2の値も変わります。
この例では、obj1
と obj2
は同じオブジェクトを参照しているため、一方を変更すると他方にもその変更が反映されます。これが参照渡しの特徴です。
これが今月のシェアする内容です。実務上、値渡しと参照渡しをうっかり見落とすことで、思わぬバグが発生することがあります。この記事がみなさんがそのような問題を解決する助けとなれば幸いです。
それでは、また来月〜