ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript パラメーターを値で渡す方法の詳細な紹介
この記事では、主に JavaScript パラメータの値渡しについて詳しく説明しています。編集者が非常に優れていると考えたので、参考として共有します。エディターに従って、それを見てみましょう
定義
ECMAScript のすべての 関数パラメータは、値によって渡されます。
値渡しとは何ですか?
言い換えると、関数の外の値を関数内のパラメーターにコピーすることは、ある 変数 から別の変数に値をコピーすることと同じです。
値で渡す
簡単な例:
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
ねえ、それは正しくありません。私たちの Little Red Book にも、ECMAScript のすべての関数のパラメーターは値によって渡されると記載されていますが、どうすればこれを参照によって渡すことができるでしょうか?
そして、これは参照渡しですか?
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 の詳細シリーズは約 15 の記事になる予定で、プロトタイプ、スコープ、実行コンテキスト、変数などの説明に重点を置き、誰もが JavaScript の基礎知識をスムーズに習得できるようにすることを目的としています。 object、this、closure、値渡し、call、apply、bind、new、inheritance、その他の難しい概念。
以上がJavaScript パラメーターを値で渡す方法の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。