ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript の値渡しと参照渡しの違いは何ですか?

JavaScript の値渡しと参照渡しの違いは何ですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-22 13:49:10882ブラウズ

What's the Difference Between Pass by Value and Pass by Reference in JavaScript?

JavaScript での参照による受け渡しと値

JavaScript で関数にデータを渡す場合、参照による受け渡しの違いを理解することが重要ですそして値渡し。この区別は、関数と呼び出し元の間でデータがどのように共有および変更されるかに影響します。

値による受け渡し

プリミティブ データ型 (文字列、数値、ブール値)、JavaScript の場合常に値渡しです。これは、プリミティブ値のコピーが作成され、関数に渡されることを意味します。関数内でコピーに加えられた変更は、関数外の元の変数には影響しません。

参照渡し

オブジェクト (配列を含む) は参照によって渡されます。 JavaScriptで。これは、関数がコピーではなくオブジェクトへの参照を受け取ることを意味します。関数内でオブジェクトのプロパティに加えられた変更は、関数外の元のオブジェクトに影響します。

次の関数について考えてみましょう:

function f(a, b, c) {
  a = 3;
  b.push("foo");
  c.first = false;
}

次の引数を指定して呼び出された場合:

var x = 4;
var y = ["eeny", "miny", "mo"];
var z = {first: true};
f(x, y, z);

x の値は変更されません。値によって渡されます。元の y 配列は、push() 操作によって直接変更されるため、その内容が変更されます。同様に、z の最初のプロパティが変更され、元のオブジェクトに影響します。

独立したオブジェクトのコピー

オブジェクトの完全に独立したコピーを作成するには、次を使用する必要があります。同じプロパティ値を持つが、元のオブジェクトへの参照を持たない新しいオブジェクトを作成するメソッド。一般的なアプローチの 1 つは、JSON.parse(JSON.stringify()) 手法を使用することです。

var newObject = JSON.parse(JSON.stringify(originalObject));

以上がJavaScript の値渡しと参照渡しの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。