A:解体の配列の割り当て
ES6特定のパターンに従ってせ、オブジェクトが解体と呼ばれる値の配列、割り当て変数から抽出され
せ[FOO、[バー]、バズ]] = [1、[2]、3 ]。 FOO // 1 バール// 2 バズ// 3 LET [、第] = [ "FOO"、 "バー"、 "バズ" ]。 第三の// "バズ" させ[X、Y] = [1、2、3 ]。 X // 1つの Y // 3 LET [ヘッド、...尾] = [1、2、3、4 ]。 ヘッド// 1 尾// [2、3、4] [X、Y、... Z]せ = [ 'A' ]。 X // "" Y // 未定義// []
「パターンマッチング」の文言限り、等号の両側に同じパターンが、左の変数は、対応する値が与えられます。上記は、ネストされた配列の解体の使用のいくつかの例です。解体が成功しなかった場合、変数の値が同じですundefined
。
不完全な解体:
すなわち、モードの左、右側の配列の唯一のマッチング部分に等号。この場合、解体はまだ成功することができます。等号の右辺が配列されていない場合は、エラーであろう。
せ、[X、Y] = [1、2、3 ]。 X // 1つの Y // 2 LET [、[B]、D] = [1、[2,3]、4 ]。// 1 B // 2 D // 4
デフォルト:
内部ES6厳密な等価演算子(===
)、位置値があるか否かを判断します。したがって、場合にのみ、厳密に等しいアレイのメンバーundefined
を有効にするには、デフォルト値。
[FOO =せtrueにする ] = []; fooの// trueに しましょう[X、Y = 'B'] = [ 'A']; // X = 'A'、Y = 'B' [せてX、Y = 'B'] = [ 'A'、未定義]; // X = 'A'、Yが= 'B' LET [X = 1] = [不定]; X // 1 LET [X = 1] = NULL ]; X- // ヌルは 、アレイのメンバーがnullの場合はnullが未定義厳密に等しくないので、デフォルト値が有効になりません。 デフォルト値は、他の変数の割り当てを分解するために参照することができますが、変数がすでに宣言されなければなりません。最後に、X yをやって、デフォルト値ため、上記の式は文句を言う理由は、yが宣言されていません。 LET [X = 1、Yが= X] = []; // X = 1; Y = 1の LET [X = 1、Y = X] = [2]。 // X = 2。Y = 2 [2,1] = [X = 1、Y = X]ましょう。// X = 1。Y = 2 のlet [X = Y、Y = 1] = []; // にReferenceError:yが定義されていません
II:解体オブジェクトの割り当て
脱構築とオブジェクトの配列の重要な違いがあります。アレイの要素が順に配置され、変数の値は、その位置によって決定され、いかなる順序とオブジェクトのプロパティは、正しい値を取得するために、変数は同じ名前でなければならない属性ありません。
バー{LET、FOO} = {FOO 'AAA'、バー: 'BBB' };
fooの// "AAA"
バー// "BBB"
のletバズ{} = {FOO 'AAA'、バー: 'BBB' };
バズ// 解体が失敗した場合、未定義では、変数の値が等しくなりますundefined
。
内部機構の解体割当オブジェクトは、同じ名前のプロパティを見つけることである、そして、対応する変数に割り当てられました。真のではなく、前者よりも後者が割り当てられます。
{LETをのfoo:バズ} = {FOO 'AAA'、バー: 'BBB' }; バズ// "AAA" FOO // エラー:fooが定義されていない コードの上に、FOOパターンが一致する、バズは可変です。本当の変数ではなく、パターンfooというよりも、バズが割り当てられます。
デフォルト:
条件が有効になるとし、構造体の配列は、デフォルト値は厳密に等しいオブジェクトの属性値ですundefined
。
VAR {X = 3} = {}; X // 3 VAR {X、Y = 5} = {X 1 }。 X // 1つの Y // 5 VAR {X:Y = 3} = {}; Y // 3 VAR {X:Y = 3} = {X:5 }。 Y // 5 VAR:= {メッセージMSG = '何かが間違っていました'} } {。 MSG // "何かが間違っていた" VAR {X = 3} = {X:不定}; X // 3 VAR {X = 3} = {X:NULL ;} X // ヌル
III:分割代入文字列の結び目
文字列には、割り当てを解体することができます。この時、文字列がオブジェクトの類似の配列に変換されるためです。アレイ状物持つlength
プロパティを、それはまた、このプロパティへの割り当てを解体することができます。
CONST [A、B、C、D、E] = 'こんにちは' ; // "H" B // "E" C // "L" D // "L" E // "O" {長さ:LEN}せ = 'こんにちは' ; LEN // 5
4:構造の割り当て値とブール値
割り当てを構造化代入するとき、等号の右辺は、数値およびブール値である場合、それは最初のオブジェクトを向けるだろう。解体の割り当てルールであれば値がオブジェクトまたは右側の配列でないとして、対象に最初にそれを回すことです
= 123:{S LET TOSTRING} ; S === Number.prototype.toString // trueに :LET {SのtoStringは} = trueに、 S === Boolean.prototype.toString // trueに
上記のコード、数値およびブール値をtoStringラッパー・オブジェクトは、特性を有し、従って、変数sの値を取ることができます。
構造割り当ての目的:
スイッチング変数の値1
X = 1ましょう。 yはせ = 2 。 [X、Y] = [Y、X]。
前記複数の機能からの戻り値
// 配列返し 機能例(){ 戻り [1,2 ,. 3。]; } せ[A、B、C] = 実施例(); //は、オブジェクトを返す 関数の例(){ リターン{ FOO: 1 、 バー: 2 }; } LET {FOO、バー} =実施例();
関数のパラメータの定義3。
割り当てを非構造は、便利なパラメータと変数名を関連付けるのセットであってもよいです。
// パラメータ群は、順序の値であり、 関数F([X、Y、Z]){...} F([ 1、2 ,. 3 ]); // パラメータは順不同値の集合である 関数F( X {Y、Z}){...} F(Z {: 3、Y 2、X:。}。1);
4. JSONデータ抽出
せjsonData = { ID: 42 、 状態: "OK" 、 データ:[ 867、5309 ] }。 {データ、ID、ステータス:数}せ = jsonData。 console.log(ID、ステータス、数)。 // 42、 "OK"、[867、5309]