値渡しとは何ですか?
言い換えると、関数の外の値を関数内のパラメーターにコピーすることは、ある変数から別の変数に値をコピーすることと同じです。
値で渡す
簡単な例:
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 サイトの他の関連記事を参照してください。