Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

JavaScriptで値渡しと参照渡しを説明しますか?


値渡し

値渡し 、関数は、変数の値を引数として直接渡すことによって呼び出されます。関数内で引数を変更しても、関数外から渡される変数には影響しません。 Javascriptは常に値渡し したがって、変数の値を変更しても、基になるプリミティブ(文字列または数値)は変更されません。

次の例では、変数「a」に値1が割り当てられていますが、関数「change」内では値2が割り当てられています。javascriptは常に値渡しであるため 、表示される出力は「1」になりますが、「2」にはなりません。

<html>
<body>
<script>
   let a = 1;
   let change = (val) => {
      val = 2
   }
   change(a);
   document.write(a);
</script>
</body>
</html>

出力

1

参照渡し

関数を呼び出すために引数の代わりにアドレスが渡される場合があります。その際、関数内の値を変更すると、関数外から渡される変数に影響します。これは参照によるパスと呼ばれます 。 JavaScriptでは、ほとんどの場合、配列とオブジェクトは参照渡しに従います。

次の例では、「a」という名前のオブジェクトが関数「change」の外部で宣言されています。ここでは、例2に示すように、変数'a'が変更されたが、値2が割り当てられていないことに注意する必要があります。参照による受け渡し ミューテーションのときに発生します 発生しました。

例-1

<html>
<body>
<script>
   let a = {num:1};
   let change = (val) => {
      val.num = 2
   }
   change(a);
  document.write(JSON.stringify(a));
</script>
</body>
</html>

出力

{"num":2}


次の例では、ミューテーションの代わりに 、変数'a'が割り当てられました 値は2です。したがって、値を渡す が行われ、外部変数に影響はありません。

例-2

<html>
<body>
<script>
   let a = {num : 1};
   let change = (val) => {
      val = {num :2};
   }
   change(a);
   document.write(JSON.stringify(a));
</script>
</body>
</html>

出力

{"num":1}

  1. HTMLフォームの値を取得してJavaScriptでコンソールに表示しますか?

    HTMLフォームの値を取得するには、valueプロパティを使用します。以下が入力タイプであるとしましょう- <input type="text" id="getValues" value="My Name is John Smith" /> 上記の値「私の名前はジョン・スミス」をコンソールに表示する必要があります。 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"

  2. C#での値型と参照型の説明と対比

    一般に、C#のすべての型は、2つの主要なカテゴリ(値型)に分類できます。 および参照型 。それぞれのタイプを詳しく見ていきましょう。 値型 値型の変数には、データが直接含まれています。各変数には、データの独自のコピーがあります。したがって、値型の変数が別のオブジェクトを変更することはできません。 値の型は、次のいずれかの型になります- すべての数値型( int、float、など) およびダブル char およびブール タイプ 構造体 タイプまたは 列挙 タイプ。 simpleの値型には、値が含まれます。たとえば、整数型には実際の数値が含まれ、参照型のように数値へのポインタは含