Javascript ES6 Destructuring
- 디스트럭처링(Destructuring)은 기존에 구조로 가지고 있던 객체(배열 또는 객체)를 분석하여 개별적인 변수에 할당하는 것이다.
- 배열 또는 객체 리터럴에서 필요한 값만을 추출하여 변수에 할당하거나 반환할 때 유용하다.
1. 배열 디스트럭처링 (Array destructuring)
- ES5의 경우, 배열의 각 요소를 배열로부터 분리하여 변수에 할당하기 위한 방법은 아래와 같다.
1 | // ES5 |
- 배열 디스트럭처링은 배열의 각 요소를 배열로부터 추출하여 변수 리스트에 할당한다. 이때 추출/할당 기준은
인덱스
이다.
1 | // ES6 Destructuring |
- 배열 디스트럭처링을 위해서는 할당 연산자 왼쪽에 배열 형태의 변수 리스트가 필요하다.
1 | let x, y, z; |
- 왼쪽의 변수 리스트와 오른쪽의 배열은 인덱스를 기준으로 할당된다.
1 | let x, y, z; |
- 배열 디스트럭처링은 배열에서 필요한 요소만 추출하여 변수에 할당하고 싶은 경우에 유용하다.
[x, …y] = [1, 2, 3]; spread를 사용하면 배열로 [2,3]이 들어간다.
1 | const arr = [1, 2, 3, 4]; |
2. 객체 디스트럭처링 (Object destructuring)
- ES5의 경우, 객체의 각 프로퍼티를 객체로부터 분리하여 변수에 할당하기 위해서는
프로퍼티 명(키)를 사용하여야 한다.
1 | // ES5 |
객체 디스트럭처링은 객체의 각 프로퍼티를 객체로부터 추출하여 변수 리스트
에 할당한다. 이때 할당 기준은프로퍼티 명(키)이다.
1 | // ES6 Destructuring |
- 객체 디스트럭처링을 위해서는 할당 연산자 왼쪽에 객체 형태의 변수 리스트가 필요하다.
1 | const { prop1: p1, prop2: p2 } = { prop1: 'a', prop2: 'b' }; |
- 객체 디스트럭처링은 객체에서 프로퍼티 명(키)으로 필요한 프로퍼티 값만을 추출할 수 있다.
1 | function margin() { |
- 중첩 객체의 경우는 아래와 같이 사용한다.
- 생략할 수 없다.(displayColor, keyboardLayout를 나타낸다.)
1
2
3
4
5
6
7function settings() {
return { display: { color: 'red' }, keyboard: { layout: 'qwerty'} };
}
const { display: { color: displayColor }, keyboard: { layout: keyboardLayout }} = settings();
console.log(displayColor, keyboardLayout); // red qwerty
- 생략할 수 없다.(displayColor, keyboardLayout를 나타낸다.)
객체 destricturing은 꼭 각 프로퍼티를 객체로부터 추출해서 변수리스트에 할당을 해야한다.