ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript パラメーターを値で渡す方法の詳細な紹介

JavaScript パラメーターを値で渡す方法の詳細な紹介

黄舟
黄舟オリジナル
2017-05-25 09:18:191319ブラウズ

この記事では、主に 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、newinheritance、その他の難しい概念。

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

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