배열이나 객체의 속성을 해체하여 그 값을 개별 변수에 담을 수 있게 하는 JavaScript 표현식
let x = [1, 2, 3, 4, 5];
let [y, z] = x;
console.log(y);
// 1
console.log(z);
// 2
let a, b, rest;
[a, b] = [10, 20];
console.log(a);
// 10
console.log(b);
// 20
[a, b, ...rest] = [10, 20, 30, 40, 50];
console.log(rest);
// [30, 40, 50]
구조 분해를 통해 변수의 선언과 분리하여 변수에 값을 할당할 수 있다.
let a, b;
[a, b] = [1, 2];
console.log(a); // 1
console.log(b); // 2
변수에 기본값을 할당하면, 분해한 값이 undefined일 때 그 값을 대신 사용
var a, b;
[a = 5, b = 7] = [1];
console.log(a); // 1
console.log(b); // 7
let o = { p: 42, q: true };
let { p, q } = o;
console.log(p); // 42
console.log(q); // true
구조 분해를 통해 변수의 선언과 분리하여 변수에 값을 할당 수 있음.
ex)
var a, b;
({ a, b } = { a: 1, b: 2 });
let o = { p: 42, q: true };
let { p: foo, q: bar } = o;
console.log(foo);
// 42
console.log(bar);
// true
let { a = 10, b = 5 } = { a: 3 };
console.log(a);
// 3
console.log(b);
// 5
let { a: aa = 10, b: bb = 5 } = { a: 3 };
console.log(aa);
// 3
console.log(bb);
// 5