解体変数の代入:ES6 2を学びます

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]

 

おすすめ

転載: www.cnblogs.com/yangjie-space/p/11614516.html