해체할당

해체 할당

이 기능은 객체나 배열을 변수로 ‘해체’할 수 있다.
일단 다짜고짜 객체 해체부터 시작

1
2
3
4
5
6
7
8
9
//객체선언
const obj = {b:2, c:3, d:4};
//해체할당
const {a, b, c} = obj;
a; //undefined : obj에는 a프로퍼티가 없음
b; //2
c; //3
d; //ReferenceError : d는 정의되지 않음

객체를 해체 때에는 반드시 변수 이름과 프로퍼티 이름이 일치해야 한다
이 예제에서는 선언과 할당을 같은 문에서 실행. 객체해체는 할당만으로도 이루어질 수 있지만 그렇게 하려면 반드시 괄호를 써야함. 괄호를 쓰지 않으면자바스클립트는 표현식 좌변을 블록으로 해석함(???)

1
2
3
4
5
const obj = {b:2, c:3, d:4};
let a, b, c;
{a, b, c} = obj; //에러염
({a, b, c} = obj); //동작함...??

배열을 해체 할 때엔 배열 요소에 대응할 변수를 마음대로 쓸 수 있음. 이들은 배열 순서대로 대응한다.

1
2
3
4
5
6
const arr = [1,2,3];
let[x,y] = arr;
x; //1
y; //2
z; //ReferenceError

x, y요소에 값이 할당되고 그 뒤의 배열요소는 모두 버려지는데 확산 연산자를 사용하면 남은 요소를 새 배열에 할당할 수 있다.

1
2
3
4
5
6
const arr = [1, 2, 3, 4, 5];
let [x,y, ...rest] = arr;
x; //1
y; //2
rest; //[3,4,5]

배열 해체를 활용하면 변수의 값을 서로 바꿀 수도 있음. 해체를 사용하지 않으면 임시변수가 필수적인 작업이라고 함

1
2
3
4
let a = 5, b = 10;
[a, b] = [b, a];
a; //10
b; //5
공유하기 댓글