JavaScript の受け渡し動作: 値渡しまたは参照渡し
JavaScript では、値渡しおよび参照渡しの概念が重要な役割を果たします。変数とオブジェクトがどのように動作するかを理解します。 「参照渡し」言語として分類されることが多いにもかかわらず、実際はもう少し微妙です。
値によるオブジェクトの受け渡し
オブジェクトを引数として渡す場合関数の場合、JavaScript は実際にそのオブジェクトへの参照のコピーを渡します。これは、関数内でオブジェクトに加えられた変更は元のオブジェクトに影響を与えることを意味します。これは、オブジェクトの内容ではなく、参照自体が値によって渡されるためです。
オブジェクト プロパティの変更
ただし、渡されるオブジェクトのプロパティを変更すると、関数の場合、それらの変更は関数のスコープ外に保持されます。たとえば、プロパティに新しい値を割り当てたり、新しいプロパティを追加すると、元のオブジェクトに影響します。
値渡しによるプリミティブ値
オブジェクトとは対照的に、プリミティブ値 (文字列、数値、ブール値など) は値によって渡されます。これは、関数内でこれらの値を変更しても、元の値には影響しないことを意味します。
受け渡し動作を制御する方法はありますか?
JavaScript には、何かが値によって渡されるか参照によって渡されるかを制御する明示的な方法はありません。ただし、予測可能かつ効率的にコードを実行するには、基礎となる受け渡し動作を理解することが重要です。
例
例1:
function modifyByRef(obj) { obj.value = "Modified"; } const obj = { value: "Original" }; modifyByRef(obj); console.log(obj.value); // "Modified"
例 2:
function modifyPrimitive(value) { value = "Modified"; } let value = "Original"; modifyPrimitive(value); console.log(value); // "Original"
のベスト プラクティスオブジェクトの作成コピー
オブジェクトの完全に独立したコピーを作成するには、Object.assign() またはスプレッド演算子 (...) を構造化とともに使用できます。
結論
変数やオブジェクトを効果的に操作するには、JavaScript の受け渡し動作を理解することが不可欠です。オブジェクトは値によって (参照として) 渡されますが、関数内のプロパティの変更は元のオブジェクトに影響します。一方、プリミティブ値は実際には値によって渡されます。パス動作を識別する機能により、コードの正確性と予測可能な結果が保証されます。
以上がJavaScript は変数を値または参照によって渡しますか?この動作はどのように説明できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。