es6 の 3 つのドットは何を意味しますか
es6 では、3 つのドット「...」は「展開演算子」を指し、関数呼び出しまたは配列の構築中に構文レベルで配列式または文字列を展開できます。これは、配列の構築時にも使用できます。リテラル オブジェクトの場合は、「キーと値」方式でオブジェクト式を展開します。
このチュートリアルの動作環境: Windows 7 システム、ECMAScript バージョン 6、Dell G3 コンピューター。
es6 の 3 つのドットは何を意味しますか?
3 つのドットの本当の名前 (...
) は展開操作です シンボルは ES6 で新しく追加されたコンテンツです。関数呼び出し/配列構築中に配列式または文字列を構文レベルで展開できます。リテラル オブジェクトを構築するときに key- に従ってオブジェクト式を展開することもできます。値を展開する
リテラルは通常、[1,2,3] または {name:'chuicchui'} を参照します。単純な構築方法、多層のネストされた配列とオブジェクトの 3 つのポイントです。できることは何もありません。 do
端的に言うと、服を脱ぐことです。中括弧 ([]) であろうと中括弧 ({}) であろうと、関係ありません。すべて脱いでください。
#// 数组 var number = [1,2,3,4,5,6] console.log(...number) //1 2 3 4 5 6 //对象 var man = {name:'chuichui',height:176} console.log({...man}) / {name:'chuichui',height:176}
#スプレッド演算子を使用する 8 つの方法
#1. 配列オブジェクトをコピーエキスパンダーを使用して配列をコピーすることは、ES6 で一般的に使用される操作です。
const years = [2018, 2019, 2020, 2021]; const copyYears = [...years]; console.log(copyYears); // [ 2018, 2019, 2020, 2021 ]
展開演算子は配列をコピーします。
最初のレイヤーのみがディープ コピーです。は、1 次元配列に使用されます。 拡張演算子のコピーはディープ コピーです。次のコードを見てください。 const miniCalendar = [2021, [1, 2, 3, 4, 5, 6, 7], 1];
const copyArray = [...miniCalendar];
console.log(copyArray); // [ 2021, [ 1, 2, 3, 4, 5, 6, 7 ], 1 ]
copyArray[1][0] = 0;
copyArray[1].push(8);
copyArray[2] = 2;
console.log(copyArray); // [ 2021, [ 0, 2, 3, 4, 5, 6, 7, 8 ], 2 ]
console.log(miniCalendar); // [ 2021, [ 0, 2, 3, 4, 5, 6, 7, 8 ], 1 ]
#Result | #Operation||
---|---|---|
[ 2021, [ 1, 2, 3, 4, 5, 6, 7 ], 1 ] | 配列のコピーminiCalendar |
| copyArray
[ 2021, [ 0, 2, 3, 4, 5, 6, 7, 8 ], 2 ] | 1. 配列の 2 番目の要素の最初の要素を 0 に再割り当てします; 2. 配列の 2 番目の要素に要素 8 を追加します; 3. 配列の 3 番目の要素を 2## に再割り当てします | ##ミニカレンダー |
[ 2021, [ 0, 2, 3, 4, 5, 6, 7, 8 ], 1 ]
| 結果から、配列の 2 番目の要素は 1 次元より大きい配列です。内部の要素を変更すると、元の変数の値もそれに応じて変更されます | #オブジェクトをコピーします。コードは次のとおりです: const time = { year: 2021, month: 7, day: { value: 1, }, }; const copyTime = { ...time }; console.log(copyTime); // { year: 2021, month: 7, day: { value: 1 } } ログイン後にコピー | 拡張オペレータ コピー オブジェクトは 1 つのレイヤーでのみディープ コピーを実行します。次のコードは上記のコードに基づいています:
#厳密に言えば、スプレッド演算子はディープ コピーを実行しません
2. マージ演算まず、次のように配列のマージを見てみましょう:
const halfMonths1 = [1, 2, 3, 4, 5, 6]; const halfMonths2 = [7, 8, 9, 10, 11, 12]; const allMonths = [...halfMonths1, ...halfMonths2]; console.log(allMonths); // [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ]
const time1 = { month: 7, day: { value: 1, }, }; const time2 = { year: 2021, month: 8, day: { value: 10, }, }; const time = { ...time1, ...time2 }; console.log(time); // { month: 8, day: { value: 10 }, year: 2021 }
const sum = (num1, num2) => num1 + num2; console.log(sum(...[6, 7])); // 13 console.log(sum(...[6, 7, 8])); // 13
は、次のように math 関数と一緒に使用されます:
const arrayNumbers = [1, 5, 9, 3, 5, 7, 10]; const min = Math.min(...arrayNumbers); const max = Math.max(...arrayNumbers); console.log(min); // 1 console.log(max); // 10
Set とともに使用します: const arrayNumbers = [1, 5, 9, 3, 5, 7, 10, 4, 5, 2, 5];
const newNumbers = [...new Set(arrayNumbers)];
console.log(newNumbers); // [ 1, 5, 9, 3, 7, 10, 4, 2 ]
String は反復可能なオブジェクトでもあるため、次のようにスプレッド演算子 ... を使用して文字配列に変換することもできます。次に、次のように文字列インターセプトを単純に実行できます:
const title = "china"; const charts = [...title]; console.log(charts); // [ 'c', 'h', 'i', 'n', 'a' ]
6.
NodeList Convert to array
#NodeList オブジェクトはノードのコレクションであり、通常は Node.childNodes
などのプロパティや document.querySelectorAll などのメソッドによって返されます。
filter、
NodeList
は配列に似ていますが、配列ではありません。find# など、
Arrayのすべてのメソッドが含まれているわけではありません。 ##、
map
などですが、forEach()
を使用して反復できます。 次のように、スプレッド演算子を使用して配列に変換できます:
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">const title = "china";
const short = [...title];
short.length = 2;
console.log(short.join("")); // ch</pre><div class="contentsignin">ログイン後にコピー</div></div>
7. 変数の構造化
const nodeList = document.querySelectorAll(".row"); const nodeArray = [...nodeList]; console.log(nodeList); console.log(nodeArray);

const [currentMonth, ...others] = [7, 8, 9, 10, 11, 12]; console.log(currentMonth); // 7 console.log(others); // [ 8, 9, 10, 11, 12 ]
8. ログを出力します
反復可能なオブジェクトを出力するときは、次のように各項目に拡張文字を使用する必要があります。
const userInfo = { name: "Crayon", province: "Guangdong", city: "Shenzhen" }; const { name, ...location } = userInfo; console.log(name); // Crayon console.log(location); // { province: 'Guangdong', city: 'Shenzhen' }
概要 ##Extension Operator... コードがより簡潔になり、ES6 ではより一般的な演算子になるはずです。
【関連する推奨事項:JavaScript ビデオ チュートリアル
、Web フロントエンド ]
以上がes6 の 3 つのドットは何を意味しますかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









非同期はes7です。 async と await は ES7 に新しく追加されたもので、非同期操作のソリューションです。async/await は co モジュールとジェネレーター関数の糖衣構文と言え、より明確なセマンティクスで JS 非同期コードを解決します。名前が示すように、async は「非同期」を意味します。async は関数が非同期であることを宣言するために使用されます。async と await の間には厳密な規則があります。両方を互いに分離することはできず、await は async 関数内でのみ記述できます。

ES6 では、配列オブジェクトの reverse() メソッドを使用して、配列の反転を実現できます。このメソッドは、配列内の要素の順序を逆にして、最後の要素を最初に、最初の要素を最後に配置するために使用されます。構文「array」 。逆行する()"。 reverse() メソッドは元の配列を変更します。変更したくない場合は、拡張演算子 "..." とともに使用する必要があり、構文は "[...array].reverse() 」。

手順: 1. 構文 "newA=new Set(a); newB=new Set(b);" を使用して、2 つの配列をそれぞれセット型に変換します; 2. has() と filter() を使用して差分セットを検索します、構文 " new Set([...newA].filter(x =>!newB.has(x)))" では、差分セット要素がセット コレクションに含まれて返されます。 3. 配列を使用します。 from セットを配列に変換するタイプ、構文は「Array.from(collection)」です。

ブラウザの互換性のため。 ES6 は JS の新しい仕様として、多くの新しい構文と API を追加していますが、最新のブラウザーは ES6 の新機能を高度にサポートしていないため、ES6 コードを ES5 コードに変換する必要があります。 WeChat Web 開発者ツールでは、デフォルトで babel が使用され、開発者の ES6 構文コードを 3 つの端末すべてで適切にサポートされる ES5 コードに変換し、開発者がさまざまな環境によって引き起こされる開発上の問題を解決できるようにします。プロジェクト内でのみ設定して確認するだけです。 「ES6~ES5」オプション。

es5 では、for ステートメントと IndexOf() 関数を使用して配列の重複排除を実現できます。構文 "for(i=0;i<配列長;i++){a=newArr.indexOf(arr[i]);if( a== -1){...}}」。 es6 では、スプレッド演算子 Array.from() および Set を使用して重複を削除できます。まず配列を Set オブジェクトに変換して重複を削除してから、スプレッド演算子または Array.from() 関数を使用する必要があります。 Set オブジェクトを配列に変換してグループ化するだけです。

es6 では、一時的なデッド ゾーンは構文エラーであり、ブロックを閉じたスコープにする let および const コマンドを指します。コード ブロック内では、let/const コマンドを使用して変数が宣言される前に、変数は使用できず、変数が宣言される前は変数の「デッド ゾーン」に属します。これは構文上「一時デッド ゾーン」と呼ばれます。 ES6 では、一時的なデッド ゾーンや let ステートメントや const ステートメントでは変数のプロモーションが発生しないことを規定しています。これは主に実行時エラーを減らし、変数が宣言される前に使用されて予期しない動作が発生するのを防ぐためです。

いいえ、require は CommonJS 仕様のモジュール構文であり、es6 仕様のモジュール構文は import です。 require は実行時にロードされ、import はコンパイル時にロードされます。require はコード内のどこにでも記述できます。import はファイルの先頭にのみ記述でき、条件文や関数スコープでは使用できません。モジュール属性は導入されるだけです。 require を実行した場合、そのためパフォーマンスは比較的低くなりますが、インポート コンパイル中に導入されたモジュールのプロパティのパフォーマンスはわずかに高くなります。

地図は注文済みです。 ES6 のマップ タイプは、多くのキーと値のペアを格納する順序付きリストです。キー名と対応する値はすべてのデータ型をサポートします。キー名の等価性は、「Objext.is()」メソッドを呼び出すことによって決定されます。 , したがって、数字の 5 と文字列「5」は 2 つのタイプとして判断され、プログラム内で 2 つの独立したキーとして現れることができます。
