ES 6解構賦値詳細解-配列
3075 ワード
解構-配列の詳細と様々な使用シーン.
1.ES 6には新しい値取り方法が導入されています.この文章は主にその中の1つのモードの使用-配列の解構について話しています.もう1つのオブジェクトモードの構造は私の別の文章を参照してください.
使用形式:let[変数名,...]=[配列要素];値を割り当てるときは1つずつ対応し、最初の変数が取った値は対応する配列内の最初の要素です.ここでは構造は配列、オブジェクトにのみ使用できます.
したがって、obj、arrayに変換できるものはすべて解構を使用することができます.配列内の値を取得する必要がありました.
解构した后にとても简単なことができて、下でどのように使うことを见てみましょう.
使用シーン:配列内の要素を取得します.
ケース1:変数の数が配列内の要素の個数に対応しない場合、後に要素に対応する変数がなく、値はundefinedになります
ケース2:配列内に空席要素がある場合、その位置の値はundefinedとデフォルト設定されます.
もちろん、これらの変数にはデフォルト値もあります.書き方は次のとおりです.
ここでは、対応する要素に一致していない場合、デフォルト値がある場合はデフォルト値をとり、ない場合はundefined(変数を宣言したのに値を付けていない)をとります.ケース3:デフォルト値があり、対応する要素に一致している場合:
ここで、xはデフォルト値6ではなく、一致値2を取得していることがわかります.ここで、デフォルト値は不活性な値に従い、要素に一致していない場合(ここでは、一致値がデフォルト値を上書きしていると理解できます)にのみデフォルト値を取得します.もちろん、配列の値がundefinedの場合を除き、変数はデフォルト値をとります.
xが値に一致していることがわかりますが、要素はundefinedで、最終的にはデフォルト値を取ります.yが一致する値はundefinedではないので、デフォルト値は上書きされます.関数パラメータの使用:ここでは、関数パラメータが解体モードを使用する場合、関数が実パラメータに入力されなければならないことを知る必要があります.そうしないと、エラーが発生します.パラメータは配列形式で入力する必要があります.
また、パラメータのデフォルト値とデフォルトパラメータの違いを知る必要があります.形式パラメータ(パラメータ)にはデフォルト値があり、実パラメータが伝達されているわけではありません.例を見てみましょう
パラメータが正しくデフォルトで入力されていないため、エラーが発生します.
ここでパラメータが入力されると、デフォルトのパスの配列パラメータが上書きされます.
ここでは、なぜ6 2 6ではないのか、undefinedの値がデフォルト値ではないのかと聞かれるかもしれません.はい、実はこの中の2はデフォルトで入力されたパラメータで、パラメータ変数のデフォルト値ではありませんので、混同しないでください.
ネスト解除の使用
実はネストして使うのは、やはり以上のルールに従います.1階か数階の配列が複数セットされているだけです.
1.ES 6には新しい値取り方法が導入されています.この文章は主にその中の1つのモードの使用-配列の解構について話しています.もう1つのオブジェクトモードの構造は私の別の文章を参照してください.
使用形式:let[変数名,...]=[配列要素];値を割り当てるときは1つずつ対応し、最初の変数が取った値は対応する配列内の最初の要素です.ここでは構造は配列、オブジェクトにのみ使用できます.
let [x,y,z]=undefined;
let [a,b,c]=null;
// , undefined null obj
let [x,y,z]='abc';
console.log(x,y,z);// a b c;
// abc obj=====new String('abc');
したがって、obj、arrayに変換できるものはすべて解構を使用することができます.配列内の値を取得する必要がありました.
let arr=[1,2,3];
let x=arr[0],
y=arr[1],
z=arr[2];
解构した后にとても简単なことができて、下でどのように使うことを见てみましょう.
使用シーン:
/* */
let arr=[1,2,3];
let [x,y,z]=arr; ====== let [x,y,z]=[1,2,3];
console.log(x,y,z);// 1,2,3
ケース1:変数の数が配列内の要素の個数に対応しない場合、後に要素に対応する変数がなく、値はundefinedになります
let [x,y,z]=[1,2];
console.log(x,y,z);// 1 2 undefined
ケース2:配列内に空席要素がある場合、その位置の値はundefinedとデフォルト設定されます.
let [x,y,z]=[1,,2]; // === [1,undefined,2]
console.log(x,y,z); // 1 undefined 2;
もちろん、これらの変数にはデフォルト値もあります.書き方は次のとおりです.
let [x,y,z=3]=[2];
console.log(x,y,z);// 2 undefined 3
ここでは、対応する要素に一致していない場合、デフォルト値がある場合はデフォルト値をとり、ない場合はundefined(変数を宣言したのに値を付けていない)をとります.ケース3:デフォルト値があり、対応する要素に一致している場合:
let [x,y=6,z=3]=[1,2];
console.log(x,y,z); // 1 2 3
ここで、xはデフォルト値6ではなく、一致値2を取得していることがわかります.ここで、デフォルト値は不活性な値に従い、要素に一致していない場合(ここでは、一致値がデフォルト値を上書きしていると理解できます)にのみデフォルト値を取得します.もちろん、配列の値がundefinedの場合を除き、変数はデフォルト値をとります.
let [x=1,y=6,z]=[undefined,2,3];
console.log(x,y,z); // 1 2 3
xが値に一致していることがわかりますが、要素はundefinedで、最終的にはデフォルト値を取ります.yが一致する値はundefinedではないので、デフォルト値は上書きされます.
/* */
function test(x,y,z){
console.log(x,y,z);
}
test();//undefined undefined undefined
/* */
function test2([x,y,z]){
console.log(x,y,z);
}
test2();//
また、パラメータのデフォルト値とデフォルトパラメータの違いを知る必要があります.形式パラメータ(パラメータ)にはデフォルト値があり、実パラメータが伝達されているわけではありません.例を見てみましょう
function test([x=1,y=2,z=3]){
console.log(x,y,z);
}
test();//
パラメータが正しくデフォルトで入力されていないため、エラーが発生します.
function test([x,y,z]=[1,2,3]){
console.log(x,y,z);
}
test();//1,2,3
ここでパラメータが入力されると、デフォルトのパスの配列パラメータが上書きされます.
function test([x,y,z]=[1,2,3]){
console.log(x,y,z);
}
test([6,,6]);//6 undefined 6
ここでは、なぜ6 2 6ではないのか、undefinedの値がデフォルト値ではないのかと聞かれるかもしれません.はい、実はこの中の2はデフォルトで入力されたパラメータで、パラメータ変数のデフォルト値ではありませんので、混同しないでください.
//
function test([x=1,y=2,z=3]){
console.log(x,y,z);
}
test([,,]);//1 2 3 [, ,]====[undefined,undefined,undefined]
ネスト解除の使用
let [x,[y],z]=[1,[2],[]];
console.log(x,y,z);//1 2 []
実はネストして使うのは、やはり以上のルールに従います.1階か数階の配列が複数セットされているだけです.