Destructuring
구조화된 배열 / 객체를 풀어서(destructure) 개별적인 변수에 할당하는 것. 배열 / 객체 리터럴에서 필요한 값을 추출해서 변수에 할당하거나 리턴할 때 유용
1. Array Destructuring
ES6의 배열 디스트럭처링은 배열의 각 요소를 배열에서 추출해 변수 리스트에 할당한다. 배열 인덱스를 기준으로 추출, 할당한다.
이 때 할당 연산자(=)의 왼 쪽에 배열 형태의 변수 리스트가 와야한다.
1 | // ES6 |
배열의 인덱스를 기준으로 오른쪽의 배열에서 왼쪽의 변수 리스트로 할당된다. 그러므로 변수의 순서가 중요하다.
1 | let x, y, z; |
2. Object Destructuring
ES6의 객체 디스트럭처링은 객체의 각 프로퍼티를 객체로부터 추출해서 변수 리스트에 할당한다. 할당 기준은 프로퍼티 키이다. 할당 연산자 왼쪽에는 객체 형태의 변수 리스트가 필요하다.
1 | // ES6 Destructuring |
객체 destructing의 경우 할당 기준이 프로퍼티 키이므로 프로퍼티 키를 명시해주지 않으려면 변수명과 프로퍼티 키가 같아야 한다. 순서는 상관 없다.
1 | const { prop1: p1, prop2: p2 } = { prop1: 'a', prop2: 'b' }; |
객체 디스트럭처링으로 객체에서 필요한 프로퍼티 키의 값만을 추출해낼 수 있다.
1 | const parts = [ |
위의 예제에서 filter 함수의 callback은 argument 로 parts의 객체 element를 하나씩 받는다. parameter에 {checked} 를 정의했다는 것은 내부적으로
1 | { checked } = { id: 1, department: 'Human Resource', checked: false }; |
가 실행되는 것과 같다. callback 함수 내에서는 checked라는 parameter 변수에 객체 element의 checked 프로퍼티의 값이 할당되어있다. 따라서 filter 실행시배열의 element 중 checked 프로퍼티의 값을 할당한 변수 checked 가 true인 객체 element만 필터링된다.
1 | const student = { |