ES 6変数の解構賦値(一)配列の解構賦値

1648 ワード

let[a,...arr]=[1,2,3,4];//a==>1   arr==>[2,3,4]

let [x, y, ...z] = ['a'];//a==>'a'  y==>undefined  z==> []

let [a, [b], d] = [1, [2, 3], 4];//a==>1  b==>2  c==>4
let[a,b]=[1,2,3];//a==>1  b==>2

配列内の変数の左右を1対1で対応:
let[a,b,c]=[1,2,3];//a==>1  b==>2  c==>3
let[a,[[b],c]]=[1,[[2],3]];//a==>1  b==>2  c==>3

変数の左の数が右より少ない
let[a,b,]=[1,2,3];//a==>1  b==>2
let[a,,c]=[1,2,3];//a==>1 c==>3
let [a, [b], d] = [1, [2, 3], 4];//a==>1 b==>2 c==>4

左の数が右の数より多く、一致しない数値変数はundefinedです.
let[a,b,c]=[1,,3];//a==>1  b==>undefined   c==>3

特殊:arrは配列
let[a,...arr]=[1,2,3,4];//a==>1   arr==>[2,3,4]
let[a,...arr]=[1,];//a=>1 arr=>[]

 
 
デフォルト値を使用して、割り当てを解くことができます.
注意:デフォルト値は、配列メンバーがundefinedに厳密に等しい場合にのみ有効です.
let[a,b='b']=['a'];//a==>'a'  b==>'b'
let[a,b='b']=['a',undefined];//a==>'a'  b==>'b'

let[a=1]=[null];//a==>null let[a=1]=[];//a==>1; let[a=1]=[undefined];//a==>1

 
デフォルト値が式である場合、この式は不活性に評価されます.つまり、使用される場合にのみ評価されます.
 
function f() {
  console.log('aaa');
}

let [x = f()] = [1];//x==>1;

let[y=f()]=[];
y;//   y    f();    aaa

 
デフォルト値は、割り当てを解除する他の変数を参照できますが、変数は宣言されている必要があります.
let[a=1,b=a]=[];//a==>1  b==>2
let[a=b,b=1]=[];//