目次
変数値のコピー
パラメータの受け渡し
ECMAScript の関数パラメータはすべて値渡しです。変数にアクセスするには、値によるアクセスと参照によるアクセスの 2 つの方法がありますが、パラメーターは値によってのみ渡すことができます。
ホームページ ウェブフロントエンド jsチュートリアル JSパラメータの受け渡しと変数のコピー

JSパラメータの受け渡しと変数のコピー

Oct 26, 2017 am 10:05 AM
javascript 変数 コピー

ECMAScript 変数には、プリミティブ型の値と参照型の値という 2 つの異なるデータ型の値が含まれる場合があります。 プリミティブ型の値は単純なデータ セグメントを指しますが、参照型の値は複数の値で構成されるオブジェクトを指します。

基本的なデータ型は 5 つあります: 未定義、Null、ブール、数値、文字列。これら 5 つの基本データ型は、変数に格納されている実際の値を操作できるため、値によってアクセスされます。 ES6 にはもう 1 つのシンボル タイプがあります。

参照型の値はメモリ上に格納されたオブジェクトであり、JavaScript ではメモリ上の位置に直接アクセスすることはできません。つまり、オブジェクトのメモリ空間を直接操作することはできません。オブジェクトを操作するときは、実際には実際のオブジェクトではなく、オブジェクトへの参照を操作していることになります。この目的のために、参照型の値は参照によってアクセスされます。

変数値のコピー

  • 【変数値のコピー】基本型変数の値をコピーすると、変数オブジェクト上に新しい値が作成され、その値が新しい変数に割り当てられた場所にコピーされます。変数値に対する演算は相互に影響しません。

  • 【参照ポインタのコピー】参照型変数の値をコピーすると、変数オブジェクトに格納されている値も新しい変数によって割り当てられた空間にコピーされます。違いは、この値のコピーが実際にはポインタであることです。そして、このポインターはヒープに格納されているオブジェクトを指します。コピー後、両方の変数は実際には同じオブジェクトを参照します。したがって、変数を変更すると、別の変数に影響します。

パラメータの受け渡し

ECMAScript のすべての関数のパラメータは値渡しされます。変数にアクセスするには、値によるアクセスと参照によるアクセスの 2 つの方法がありますが、パラメーターは値によってのみ渡すことができます。

  • 基本型パラメータの受け渡し: 関数に渡されるのは値のコピーであり、関数内での変更は外部からは見えません。

var a = 1;
var b = 2;
function change(a, b) {
    var c = a;
    a = b;
    b = c;
    console.log(a);    //2
    console.log(b);    //1
}
change(a, b);
console.log(a);    //1
console.log(b);    //2
ログイン後にコピー
  • 参照型パラメータの受け渡し: 関数に渡されるのは値への参照です。関数内のプロパティの変更は外部から参照できますが、新しい参照による上書きは外部から参照できません。

    var a = [1, 2, 3];
    var b = [5, 6];
    function change(a,b) {
      a[0] = 4;    //对其属性的修改外部可见 
      var c = a;
      a = b;      //用新引用覆盖
      b = c;
      console.log(a);  //"5,6"        
      console.log(b);  //"4,2,3"
    }
    change(a,b);
    console.log(a);    //"4,2,3"
    console.log(b);    //"5,6"
    ログイン後にコピー
  • a、bはchange関数内の変数ですが、関数を呼び出すとこの2つの変数にaとbの参照が代入されますが、グローバルの世界ではaとbを変更することはできません。関数は参照を取得するだけで参照を変更する権限がないため、新しい参照による上書きは外部からは見えないからです。
var a = [1, 2, 3];
var b = [5, 6];
function change() {
  var c = a;
  a[0] = 4;    //对其属性的修改外部可见 
  a = b;      //用新引用覆盖
  b = c;
}
change(a,b);
console.log(a);  //"5,6" 
console.log(b);  //"4,2,3"
ログイン後にコピー

js はブロックレベルのスコープを持っていないので、change 内で変数 a を見つけることができず、b は意識的に上の層に行って見つけることになるので、ここでの a と b はグローバル変数への参照になります。

☞☞☞JavaScriptの深層学習シリーズ☜☜☜

ECMAScript変数には、プリミティブ型の値と参照型の値という2つの異なるデータ型の値が含まれる場合があります。 プリミティブ型の値は単純なデータ セグメントを指しますが、参照型の値は複数の値で構成されるオブジェクトを指します。

基本的なデータ型は 5 つあります: 未定義、Null、ブール、数値、文字列。これら 5 つの基本データ型は、変数に格納されている実際の値を操作できるため、値によってアクセスされます。 ES6 にはもう 1 つのシンボル タイプがあります。

参照型の値はメモリ上に格納されたオブジェクトであり、JavaScript ではメモリ上の位置に直接アクセスすることはできません。つまり、オブジェクトのメモリ空間を直接操作することはできません。オブジェクトを操作するときは、実際には実際のオブジェクトではなく、オブジェクトへの参照を操作していることになります。この目的のために、参照型の値は参照によってアクセスされます。

変数値のコピー

    【変数値のコピー】基本型変数の値をコピーすると、変数オブジェクト上に新しい値が作成され、その値が新しい変数に割り当てられた場所にコピーされます。変数値に対する演算は相互に影響しません。
  • 【参照ポインタのコピー】参照型変数の値をコピーすると、変数オブジェクトに格納されている値も新しい変数によって割り当てられた空間にコピーされます。違いは、この値のコピーが実際にはポインタであることです。そして、このポインターはヒープに格納されているオブジェクトを指します。コピー後、両方の変数は実際には同じオブジェクトを参照します。したがって、変数を変更すると、別の変数に影響します。
  • パラメータの受け渡し

ECMAScript の関数パラメータはすべて値渡しです。変数にアクセスするには、値によるアクセスと参照によるアクセスの 2 つの方法がありますが、パラメーターは値によってのみ渡すことができます。

基本的な型パラメータの受け渡し: 関数に渡されるのは値のコピーであり、関数内でのその変更は外部からは見えません。


var a = 1;
var b = 2;
function change(a, b) {
    var c = a;
    a = b;
    b = c;
    console.log(a);    //2
    console.log(b);    //1
}
change(a, b);
console.log(a);    //1
console.log(b);    //2
ログイン後にコピー

    参照型パラメータの受け渡し: 関数に渡されるのは値への参照です。関数内のプロパティの変更は外部から参照できますが、新しい参照による上書きは外部から参照できません。
    var a = [1, 2, 3];
    var b = [5, 6];
    function change(a,b) {
      a[0] = 4;    //对其属性的修改外部可见 
      var c = a;
      a = b;      //用新引用覆盖
      b = c;
      console.log(a);  //"5,6"        
      console.log(b);  //"4,2,3"
    }
    change(a,b);
    console.log(a);    //"4,2,3"
    console.log(b);    //"5,6"
    ログイン後にコピー
  • a, b 変更関数内の変数ですが、関数を呼び出すとこの2つの変数にaとbの参照が代入されますが、グローバルの世界ではaとbを変更することはできません。関数は参照を取得するだけで参照を変更する権限がないため、新しい参照による上書きは外部からは見えないからです。

    var a = [1, 2, 3];
    var b = [5, 6];
    function change() {
      var c = a;
      a[0] = 4;    //对其属性的修改外部可见 
      a = b;      //用新引用覆盖
      b = c;
    }
    change(a,b);
    console.log(a);  //"5,6" 
    console.log(b);  //"4,2,3"
    ログイン後にコピー

    js はブロックレベルのスコープを持っていないので、change 内で変数 a を見つけることができず、b は意識的に上の層に行って見つけることになるので、ここでの a と b はグローバル変数への参照になります。

    以上がJSパラメータの受け渡しと変数のコピーの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

QQ Music から歌詞をコピーする方法 歌詞をコピーする方法 QQ Music から歌詞をコピーする方法 歌詞をコピーする方法 Mar 12, 2024 pm 08:22 PM

私たちユーザーは、このプラットフォームを使用する際にいくつかの機能の多様性を理解できるはずであり、いくつかの曲の歌詞は非常によく書かれていることがわかります。何度か聞いて、とても深い意味を感じることもあるので、意味を理解したい場合は、そのままコピーしてコピーライティングとして使いたくなりますが、使いたい場合は、まだ必要です 歌詞をコピーする方法を学ぶ必要があります 誰もがこれらの操作に慣れていると思いますが、携帯電話での操作は確かに少し難しいです。 そこで、よりよく理解するために、今日は編集者がは、あなたを助けるためにここにあります。上記の操作エクスペリエンスのいくつかをわかりやすく説明しています。もし気に入ったら、エディターと一緒に見に来てください。お見逃しなく。​

PSコピーレイヤーのショートカットキー PSコピーレイヤーのショートカットキー Feb 23, 2024 pm 02:34 PM

PS コピー レイヤーのショートカット キーでは、PS を使用しているときにレイヤーをコピーしたい場合、ショートカット キー [Ctrl+J] を使用すると簡単にコピーできることがわかります。レイヤーをコピーするショートカットキーの具体的な操作方法を紹介しますが、以下に詳しい内容を記載していますので、ぜひご覧ください。 PS レイヤーのコピー ショートカット キーの答え: [Ctrl+J] 具体的な方法: 1. PS で画像を開き、コピーする必要があるレイヤーを選択します。 2. キーボードの[Ctrl+J]を同時に押して、レイヤーのコピーを完了します。その他のコピー方法: 1. 画像を開いた後、レイヤーを長押しして[新規レイヤー]アイコンを下に移動します。 2. アイコンに移動したら指を放します。 3. レイヤーのコピーが完了します。

Ajaxを使用してPHPメソッドから変数を取得するにはどうすればよいですか? Ajaxを使用してPHPメソッドから変数を取得するにはどうすればよいですか? Mar 09, 2024 pm 05:36 PM

Ajax を使用して PHP メソッドから変数を取得することは、Web 開発では一般的なシナリオであり、Ajax を使用すると、データを更新せずにページを動的に取得できます。この記事では、Ajax を使用して PHP メソッドから変数を取得する方法と、具体的なコード例を紹介します。まず、Ajax リクエストを処理し、必要な変数を返すための PHP ファイルを作成する必要があります。以下は、単純な PHP ファイル getData.php のサンプル コードです。

Python 構文のマインド マップ: コード構造の深い理解 Python 構文のマインド マップ: コード構造の深い理解 Feb 21, 2024 am 09:00 AM

Pythonはそのシンプルで読みやすい構文から幅広い分野で広く使われています。プログラミングの効率を向上させ、コードがどのように機能するかを深く理解するためには、Python 構文の基本構造をマスターすることが重要です。この目的を達成するために、この記事では、Python 構文のさまざまな側面を詳しく説明した包括的なマインド マップを提供します。変数とデータ型 変数は、Python でデータを保存するために使用されるコンテナです。マインド マップには、整数、浮動小数点数、文字列、ブール値、リストなどの一般的な Python データ型が表示されます。各データ型には独自の特性と操作方法があります。演算子 演算子は、データ型に対してさまざまな操作を実行するために使用されます。マインド マップは、算術演算子、比率など、Python のさまざまな演算子の種類をカバーしています。

簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 Jan 05, 2024 pm 06:08 PM

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

Javaのインスタンス変数とは何ですか Javaのインスタンス変数とは何ですか Feb 19, 2024 pm 07:55 PM

Java のインスタンス変数は、メソッドやコンストラクターではなく、クラスで定義された変数を指します。インスタンス変数はメンバー変数とも呼ばれ、クラスの各インスタンスにはインスタンス変数の独自のコピーがあります。インスタンス変数はオブジェクトの作成時に初期化され、その状態はオブジェクトの存続期間全体にわたって保存および維持されます。インスタンス変数定義は通常、クラスの先頭に配置され、パブリック、プライベート、プロテクト、またはデフォルトのアクセス修飾子など、任意のアクセス修飾子を使用して宣言できます。それは私たちがこれをどうしたいかによって決まります

C言語のconstを深く理解する C言語のconstを深く理解する Feb 18, 2024 pm 12:56 PM

C の const の詳細な説明とコード例 C 言語では、const キーワードを使用して定数を定義します。これは、プログラムの実行中に変数の値を変更できないことを意味します。 const キーワードは、変数、関数パラメータ、関数の戻り値を変更するために使用できます。この記事では、C 言語での const キーワードの使用法を詳細に分析し、具体的なコード例を示します。 const 変更された変数 const を使用して変数を変更する場合、その変数は読み取り専用変数であり、値が割り当てられると変更できないことを意味します。例: 定数

jQuery の使用法: 変数が空かどうかを判断するいくつかの方法 jQuery の使用法: 変数が空かどうかを判断するいくつかの方法 Feb 27, 2024 pm 04:12 PM

jQuery は Web 開発で広く使用されている JavaScript ライブラリで、Web ページ要素を操作したりイベントを処理したりするためのシンプルで便利なメソッドを多数提供します。実際の開発では、変数が空かどうかを判断する必要がある場面によく遭遇します。この記事では、jQuery を使用して変数が空かどうかを判断する一般的な方法をいくつか紹介し、具体的なコード例を添付します。方法 1: if ステートメントを使用して、varstr="";if(str){co を決定します。

See all articles