スプレッド演算子のサンプルコードと JavaScript での応用

スプレッド演算子のサンプルコードと JavaScript での応用

スプレッド演算子を使用すると、式をある時点で展開できます。スプレッド演算子は、複数のパラメーター (関数呼び出しの場合)、複数の要素 (配列リテラルの場合)、または複数の変数 (分割代入の場合) がある場合に使用できます。

obj1 = {
 値1: 1,
 値2: 2
};
obj2 = {...obj1}とする
};
console.log(obj2); // {値1: 1、値2: 2}

上記の用法は実際には

obj2 = {値1: 1、値2: 2}

スプレッド演算子の記述とobj2 = obj1の直接代入の記述の違いは、値が直接代入される場合、引用類型の場合、 obj1のメモリ空間アドレスを代入するだけと同じになる点です。 obj2変更されると、 obj1もそれに応じて変更されます。展開運算符を使用すると、 obj1オブジェクト内の属性タイプはすべて基本類型なので、オブジェクトを再作成することと同等になります。このとき、 obj2が変更されても、 obj1オブジェクトには影響しません。ただし、これはすべてのプロパティが基本型である場合(つまり、ディープ コピーが 1 レベルのみ実行される場合)にのみ制限されます。オブジェクト内のプロパティが参照型の場合、プロパティ内の参照型の値が変更されると、両方のオブジェクトのプロパティ値が変更されます。

obj1 = {
 属性1: [3, 6, 0],
 属性2: 4,
 属性4: 5
};
obj2 = {...obj1}とします
};

obj2.attri2 = 888;
obj2.attri1[0] = 7;

コンソールにログ出力します。
コンソールにログ出力します。

スプレッド演算子の応用

1. 関数内でスプレッド演算子を使用する

関数テスト(a, b, c){};

arr = [1, 2, 3]とします。
テスト(...arr);

2. 配列リテラルでのスプレッド演算子の使用

arr1 = [1, 2]とします。
arr2 = [...arr1, 3, 4] とします。 // [1, 2, 3, 4]

// プッシュメソッドを使用する let arr1 = [1, 2];
arr2 = [3. 4]とします。
arr1.push(...arr2); // [1, 2, 3, 4]

3. 分解代入に使用されます。展開演算子は分解代入の最後にのみ使用できます。それ以外の場合はエラーが報告されます。

// スプレッド演算子は、分割代入の最後にのみ使用できます。
[a, b, ...c] = [1, ,2, 3, 4]とします。
console.log(a, b, c) // 1, 2, [3, 4]

4. クラス配列は配列になる

oLis = document.getElementsByTagName("li"); とします。
liArr = [...oLis] とします。

5. オブジェクト内でスプレッド演算子を使用する
ES7 のオブジェクト スプレッド演算子を使用すると、オブジェクトをより迅速に操作できます。

{x,y,...z}={x:1,y:2,a:3,b:4}とします。
// 1 です
y; // 2
z; // {a:3,b:4}

オブジェクトを別のオブジェクトに挿入します。

z={a:3,b:4}とします。
n={x:1,y:2,...z}とします。
console.log(n); //{x:1,y:2,a:3,b:4}

2 つのオブジェクトを結合します。

a={x:1,y:2}とします。
b={z:3} とします。
ab={...a,...b}とします。
console.log(ab); // {x:1,y:2,z:3}

JavaScript のスプレッド演算子とその応用例コードに関するこの記事はこれで終わりです。より関連性の高い js スプレッド演算子コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • JavaScript スプレッド演算子の詳細な説明
  • ES6 スプレッド構文の基礎
  • JS ES6 非同期ソリューション
  • JS ES6における構造化分解についてお話しましょう
  • ES6 文字列拡張の例
  • ES6のトップ10機能の紹介
  • ES6のクラス例の詳細な説明
  • ES6拡張演算子の使い方と注意点を詳しく解説
  • JS ES6 スプレッド演算子の魔法のような使い方

<<:  js での遅延読み込みとプリロードの具体的な使用法

>>:  node.js で Web サーバーを作成する手順の詳細な説明

推薦する

HTTP サーバーとクライアントのやり取りをシミュレートする Node.js+postman

目次1. NodeがHTTPサーバーを構築する2. HTTPサーバーがリクエストを取得する1. Po...

MySQL データベース内の数十億のデータを素早くクリーンアップする方法

今日、ディスクアラーム例外を受け取りました。50G ディスクが爆発しました。分析と解決のプロセスは次...

element-uiのアップロードコンポーネントでファイルやその他のパラメータを転送する際の問題を分析する

最近、element-ui を統合したプロジェクトで vuethink を使用しました。以前は bo...

KVM ベースの SRIOV パススルー構成とパフォーマンス テストの詳細な説明

SRIOVの導入、VFパススルー構成、パケット転送速度性能テスト目次1. SRIOVの紹介2. 環境...

k8sとDockerの関係についての簡単な説明

最近、プロジェクトでは kubernetes (以下、k8s と表記、k と s の間には 8 つの...

Dockerfile を使用して Docker イメージをカスタマイズする方法

Dockerfile を使用したイメージのカスタマイズイメージのカスタマイズとは、実際には各レイヤー...

Centos6 で 20TB を超えるディスクをパーティション分割してフォーマットするためのサンプル コード

1. サーバー環境の構成: 1. ディスクパーティションを確認します。最近、あるプロジェクト内のサー...

MySQL マスタースレーブレプリケーションでエラーをスキップする方法

1. 従来のbinlogマスタースレーブレプリケーション、エラー報告をスキップする方法 mysql&...

MySQL 8.0.12 のインストールと設定のチュートリアル

この記事はMySQL 8.0.12のインストールと設定に関する詳細なチュートリアルを記録しています。...

MySQL パーティションテーブルの正しい使用方法

MySQL パーティションテーブルの概要数億、あるいは数十億ものレコードを格納するテーブルに遭遇する...

VUE ユニアプリテンプレート構文についての簡単な説明

1.v-bind(略称:)コンポーネント プロパティのデータで定義されたデータ変数を使用するか、コン...

Nginx+SpringBoot による負荷分散の実装例

負荷分散の概要Nginx の負荷分散実装を紹介する前に、負荷分散の分類について簡単に説明します。負荷...

Linux Centos でスクリプトを使用して Docker をインストールする方法

Dockerの主な機能は何ですか?現在、Docker には少なくとも次のアプリケーション シナリオが...

Linux でのデータベースのスケジュールバックアップの実装スクリプト

目次シナリオ: サーバーデータベースを毎日定期的にバックアップする必要がある1. まずバックアップス...

Alibaba Cloud Server Ubuntu 上の Workbench が MySQL に接続できない問題の解決策 (テスト済み)

過去 2 日間、ワークベンチが Alibaba Cloud Server に接続できない問題を解決す...