ES6 の構造化代入の原理と応用を 1 つの記事でマスターする
この記事では、javascript に関する関連知識を提供します。ES6 では、特定のパターンに従って配列またはオブジェクトから値を抽出し、値を変数に代入することができます。これを構造化と呼びます。等号の両側のパターンが同じであれば、左側の変数に対応する値が代入される、この書き方は「パターンマッチング」に属します。総称して「構造化代入」と呼ばれます。一緒に見てみましょう。皆さんのお役に立てれば幸いです。
[関連する推奨事項: JavaScript ビデオ チュートリアル 、Web フロントエンド ]
arrays
let [a, b, c] = [1, 2, 3]
複数の変数を同時に定義します。a は 1 に一致し、b は 2 に一致し、c は 3 に一致します。
割り当てを分割すると、デフォルト値を次のようにできます。指定された場合、つまり、左側の変数はデフォルト値を指定します。右側に対応する値がない場合は、デフォルト値が最初に出力されます。
let [x, y = 'b'] = ['a'] // x = 'a', y = 'b'
#x は文字 a に一致し、y のデフォルト値は文字 b です。右側に対応する文字がない場合は、デフォルトで文字 b が出力されます。
オブジェクトの分割代入
分割は配列だけでなくオブジェクトにも使用できます。オブジェクトの分割と配列には重要な違いがあります。配列の要素、変数の値はその位置によって決まり、オブジェクトの属性は順序どおりではなく、正しい値を取得するには変数の名前が属性と同じである必要があります。
let { name, age, hobbies: [one, two] } = { name: 'shiramashiro', age: 21, hobbies: ['骑行', '动漫'] }
たとえば、age の値を abc の値に変更すると、オブジェクトの属性名に対応していないため、対応する値を割り当てることができません。は未定義です。
分割代入の使用
変数の値の交換
変数の値を交換する通常の考え方
let x = 1, y = 2, temp = 0 temp = x // x = 1 = temp x = y // y = 2 = x y = temp // temp = 1 = y console.log('x => ', x) console.log('y => ', y)
分割代入を使用した変数の交換
let x = 1; let y = 2; [x, y] = [y, x]; console.log('x => ', x) console.log('y => ', y)
この方法で変数 x と y の値を交換することは、簡潔であるだけでなく、読みやすく、セマンティクスも非常に明確です。
関数から複数の値を返す
関数は 1 つの値しか返せません。複数の値を返したい場合は、配列またはオブジェクトでのみ返すことができます。分割割り当てがあり、より便利になります。
趣味配列の 2 番目の値を抽出します
function getArray() { return { name: 'kongsam', age: 21, hobbies: ['骑行', '动漫', '羽毛球'] } } console.log(getArray().name + '喜欢' + getArray().hobbies[1]) // 动漫
分割代入を使用して趣味配列の 2 番目の値を取得します
let {name, age, hobbies} = getArray() console.log(name + '喜欢' + hobbies[1]) // 动漫
マップ構造をトラバースします
ループ トラバーサルの場合、トラバースされる値は配列であり、分割代入により配列の「パターン マッチ」が可能になり、キーと値を迅速に削除できます。
#for...of ループの走査と構造化代入は、キーと値を取得するのに非常に便利です。
for (let [key, value] of map) { console.log("key => ", key) console.log("value => ", value) }
関数パラメータの割り当ての構造化
// let { x = 10, y = 5 } = {} function f({ x = 10, y = 5 } = {}) { return [x, y] } console.log(f({ x: 100, y: 50 })) // [100, 50] console.log(f({ x: 3 })) // [3, 5] console.log(f({})) // [10, 5] console.log(f()) // [10, 5]
関数のパラメータにオブジェクトを渡すことができ、関数のパラメータにデフォルト値を設定できます。オブジェクトに渡されます。使用する関数に分解されます、このように理解できます。
function f(x = 10, y = 5) { return [x, y] } console.log(f(100, 50)) // [100, 50] console.log(f(3)) // [3, 5] console.log(f()) // [10, 5]
上記の書き方が異なるため、結果も異なります。
function f({ x, y } = { x: 10, y: 5 }) { return [x, y] } console.log(f({ x: 100, y: 50 })) // [100, 50] console.log(f({ x: 3 })) // [3, undefined] console.log(f({})) // [undefined, undefined] console.log(f()) // [10, 5]
3 番目と 4 番目の出力は未定義になります。これは、入力された x または y が次の値に対応していないためです。オブジェクト属性。 の値は、一致が失敗したために発生します。
【関連する推奨事項: JavaScript ビデオ チュートリアル 、Web フロントエンド ]
以上がES6 の構造化代入の原理と応用を 1 つの記事でマスターするの詳細内容です。詳細については、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)

ホットトピック









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

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

手順: 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 つの独立したキーとして現れることができます。
