JavaScript のプリミティブ値と参照値
JavaScript では、変数にプリミティブ値または参照値を割り当てることができます。ブール値、数値、文字列などのプリミティブ値は、変数のメモリ位置に直接保存されます。
配列やオブジェクトなどの参照値を作成する場合、実際にはオブジェクトや配列を保存するわけではありません。それ自体を変数に入れます。代わりに、オブジェクトまたは配列が保存されているメモリ内の場所への参照を保存します。これは、オブジェクトまたは配列を変更すると、変数自体が変更されていなくても、その変更が変数に反映されることを意味します。
例
以下JavaScript コードは、プリミティブ値と参照値を作成します。
var name = "John"; // Primitive value stored in the variable var shoppingCart = []; // Reference value stored in the variable
この例では、変数名にプリミティブ値「John」が含まれています。変数 shoppingCart には、メモリに保存されている配列オブジェクトへの参照が含まれています。
値による値の受け渡しと参照による値の受け渡し
関数にプリミティブ値を渡す場合、値のコピーが渡されます。これは、関数内で値を変更しても、変数に格納されている値には影響しないことを意味します。
関数に参照値を渡すと、コピーではなく参照自体が渡されます。これは、関数内でオブジェクトまたは配列に加えられた変更は、変数に格納されているオブジェクトまたは配列にも影響することを意味します。
例
次の JavaScript コードは、次のことを示します。値を値渡しおよび参照渡し:
// Pass by value var name = "John"; function changeName(name) { name = "Jane"; // Changes the local copy of the value } changeName(name); console.log(name); // Outputs "John" because the original value is not changed // Pass by reference var shoppingCart = []; function addProduct(shoppingCart) { shoppingCart.push("Apple"); // Changes the object stored in the reference } addProduct(shoppingCart); console.log(shoppingCart); // Outputs ["Apple"] because the original object is updated
最初の例では、関数changeNameにプリミティブ値「John」が渡されます。関数が値を「Jane」に変更しても、変数名に格納されている元の値は影響を受けません。
2 番目の例では、関数 addProduct に参照値 shoppingCart が渡されます。関数が製品「Apple」を配列に追加すると、変数 shoppingCart に格納されている元のオブジェクトも更新されます。
以上がJavaScript で関数に渡されるとき、プリミティブ値と参照値はどのように異なりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。