JavaScript パラメータの値渡しと参照渡しの使用例の詳細な説明

伊谢尔伦
リリース: 2017-07-26 17:09:22
オリジナル
1265 人が閲覧しました

値渡しとは何ですか?

言い換えると、関数の外の値を関数内のパラメーターにコピーすることは、ある変数から別の変数に値をコピーすることと同じです。

値で渡す

簡単な例:


var value = 1;
function foo(v) {
  v = 2;
  console.log(v); //2
}
foo(value);
console.log(value) // 1
ログイン後にコピー

関数 foo に値を渡すとき、コピーされたコピーが _value であると仮定すると、それは簡単に理解できます。関数内で変更されるのは _value の値であり、元の値には影響しません。

参照渡し

コピーは理解しやすいですが、値が複雑なデータ構造の場合、コピーするとパフォーマンスの問題が発生します。

つまり、参照渡しと呼ばれる別の受け渡し方法があります。

いわゆる参照による受け渡しとは、関数内のパラメーターに変更を加えると、両方が同じオブジェクトを参照するため、オブジェクトの値に影響を与えます。

例:


var obj = {
  value: 1
};
function foo(o) {
  o.value = 2;
  console.log(o.value); //2
}
foo(obj);
console.log(obj.value) // 2
ログイン後にコピー

これは参照渡しですか?

3 番目の転送方法

急いで、別の例を見てみましょう:


var obj = {
  value: 1
};
function foo(o) {
  o = 2;
  console.log(o); //2
}
foo(obj);
console.log(obj.value) // 1
ログイン後にコピー

JavaScript が参照転送を使用すると、どのようにしてこのようなことが起こるのでしょうか?変更されましたか?では、本当に参照渡しではないのでしょうか?

これは、実際には共有配送と呼ばれる 3 番目の配送方法があることに言及することです。

共有転送とは、オブジェクトを転送するときに、オブジェクトの参照のコピーが転送されることを意味します。

注: 参照による受け渡しはオブジェクトへの参照を渡すことですが、共有による受け渡しはオブジェクトの参照のコピーを渡すことです。

つまり、o.value を変更すると、参照を通じて元の値を見つけることができますが、o を直接変更しても元の値は変更されません。したがって、2 番目と 3 番目の例は実際には共有によって渡されます。

最後に、次のように理解できます:

パラメータが基本型の場合は値によって渡され、参照型の場合は共有によって渡されます。

ただし、コピーは値のコピーでもあるため、標高で値によって渡されるものとも直接見なされます。

以上がJavaScript パラメータの値渡しと参照渡しの使用例の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート