구조 분해 할당은 매번 인덱스를 통해 배열의 요소에 접근하는 것이 아니라 할당된 변수를 통해 간단하게 배열의 요소를 불러올 수 있습니다.
구조분해할당
이란 배열이나 객체의 속성을 해체하여 그 값을 개별 변수에 담을 수 있게 하는 Javascript 표현식입니다.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(a); // 10
console.log(b); // 20
console.log(rest); // [30, 40, 50]
({ a, b } = { a: 10, b: 20 });
console.log(a); // 10
console.log(b); // 20
// Stage 4(finished) proposal
({ a, b, ...rest } = { a: 10, b: 20, c: 30, d: 40 });
console.log(a); // 10
console.log(b); // 20
console.log(rest); // {c: 30, d: 40}
let arr = [1,2,3,4,5]
let x = [1, 2, 3, 4, 5];
let [y, z] = x;
console.log(y); // 1
console.log(z); // 2
let foo = ["one", "two", "three"];
let [red, yellow, green] = foo;
console.log(red); // "one"
console.log(yellow); // "two"
console.log(green); // "three"
let a, b;
[a, b] = [1, 2];
console.log(a); // 1
console.log(b); // 2
undefined
일 때 그 값을 대신 사용합니다.let a, b;
[a = 5, b = 7] = [1];
console.log(a); // 1
console.log(b); // 7
let a = 1;
let b = 3;
[a, b] = [b, a];
console.log(a); // 3
console.log(b); // 1
let [a, ...b] = [1, 2, 3];
console.log(a); // 1
console.log(b); // [2, 3]
나머지 요소의 오른쪽 뒤에 쉼표가 있으면 syntaxError가 발생합니다.
let [a, ...b,] = [1, 2, 3]; // SyntaxError: rest element may not have a trailing comma
let o = { p: 42, q: true };
let { p, q } = o;
console.log(p); // 42
console.log(q); // true
let o = { p: 42, q: true };
let { p: foo, q: bar } = o;
console.log(foo); // 42
console.log(bar); // true
undefined
인 경우, 변수에 기본값을 할당할 수 있습니다.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