ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript における値渡しと参照渡し: 関数の引数にどのような影響を与えるのでしょうか?

JavaScript における値渡しと参照渡し: 関数の引数にどのような影響を与えるのでしょうか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-22 15:21:13888ブラウズ

Pass-by-Value vs. Pass-by-Reference in JavaScript: How Do They Affect Function Arguments?

JavaScript の値渡しと参照渡しを理解する

JavaScript で値またはオブジェクトを関数に渡す場合、これは非常に重要です参照渡しと値渡しの概念を理解するため。つまり、プリミティブ (数値、文字列、ブール値など) は値によって渡されます。つまり、関数内で行われた変更は、関数外の元の値には影響しません。

ただし、オブジェクトは「コピー」によって渡されます。参考になります。」これは、オブジェクトが関数に渡されると、元のオブジェクトへの新しい参照が作成されることを意味します。関数内でオブジェクトの内容に加えられた変更は、元のオブジェクトに影響します。

ケーススタディ: Rectangle 関数の例

提供された例には、Rectangle 関数があります。これは、config オブジェクトとオプションの my オブジェクトを受け取ります。引数にローカル my オブジェクトが存在しない場合、内部的にはローカル my オブジェクトを定義します。この my オブジェクトには、長方形の長さと幅が格納されます。

rectangle 関数内の area 関数は、my オブジェクトに格納されている長さと幅を使用して長方形の面積を計算します。

Rectangle 関数を呼び出し、返されたオブジェクトを myRec に代入すると、my オブジェクトへの参照のコピーが作成されます。 Rectangle 関数内で my の内容に加えられた変更 (my.l と my.w の更新など) は、my と myRec の両方に反映されます。これは、これらが同じ基になるオブジェクトを参照しているためです。

ただし、 Rectangle 関数内で my への参照を上書きしようとしますが、呼び出し元 (myRec) が保持する参照のコピーには影響しません。これは、参照が値によって渡されるためです。つまり、関数内で my に新しいオブジェクトを割り当てると、呼び出し元が保持する参照ではなく、ローカル参照のみが変更されます。

以上がJavaScript における値渡しと参照渡し: 関数の引数にどのような影響を与えるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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