일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 17822
- 17471
- Git
- react
- HTTP
- graph
- SWEA
- 응답코드
- Java
- 백준
- 타겟넘버
- 파핑파핑지뢰찾기
- 달팽이는올라가고싶다
- SOCKET
- web
- 1868
- npm
- 소형기관차
- Ajax
- boj
- node.js
- 2869
- staged
- 알고리즘
- 카카오코드페스티벌
- commited
- 비동기
- JavaScript
- GitHub
- JSP
- Today
- Total
devlog
[Javascript] 구조 분해 할당(destructuring) 본문
ES6에서 배열과 object를 조금 더 쉽게 다루는 방식이 추가됐다.
구조 분해 할당 구문은 배열이나 객체의 속성을 해체하여 그 값을 개별 변수에 담을 수 있게 하는 JavaScript 표현식이다.
구조 분해 연산자, 전개 연산자, 각 배열에 들어가 있는 데이터를 하나씩 가져와서 처리해야 되는 상황을 한 번에 처리할 수 있도록 해준다.
1. 객체 구조 분해 할당
아래는 객체 구조분해(destructuring)의 예시이다.
let obj = {
name : "devlog",
age : 1
};
let { name, age } = obj;
name과 age의 값을 확인해보면 각각 obj.name, obj.age의 값이 담긴 것을 확인해볼 수 있다.
객체를 구조분해 할 때 주의해야 할 것은 우선 할당 연산자의 왼쪽에 객체리터럴이 와야 하고,할당 연산자의 오른쪽에 오는 값이 null이나 undefined여서는 안된다는 것이다.
그리고 구조 분해를 할 때 변수를 선언만 해서는 안되고 반드시 초기자(initializer)를 해줘야 한다.
2. 배열 분해 할당
배열의 값을 별도의 변수에 할당하려는 경우, destructuring을 통해 간단하고 깨끗하게 할당할 수 있다.
인덱스나 루프를 사용할 필요가 없다.
const array = ['a', 'b', 'c', 'd'];
const [first, second, third, fourth] = array;
console.log(first); // Outputs 'a'
console.log(second); // Outputs 'b'
console.log(third); // Outputs 'c'
console.log(fourth); // Outputs 'd'
위와 같이 배열의 값들을 알아서 할당해준다.
이 문법은 배열 안에 있는 원소를 다른 이름으로 새로 선언해주고 싶을 때 사용하면 매우 유용하다.
객체 비구조화 할당과 마찬가지로, 기본값 지정이 가능하다.
3. 깊은 값 구조 분해 할당
const deepObject = {
state : {
information : {
name : 'devlog',
category : ['js', 'algorithm', 'java']
}
},
age: 1
};
위와 같은 배열이 존재할 때, name, category 값들을 밖으로 꺼내고 싶다면 어떻게 해야 할까?
첫 번째 방법은 비구조화 할당 문법을 두 번 사용하는 것이다.
const deepObject = {
state: {
information : {
name : 'devlog',
category : ['js', 'algorithm', 'java']
}
},
age : 1
};
const { name, category } = deepObject.state.information;
const { age } = deepObject;
const extracted = {
name,
category,
age
};
console.log(extracted); // {name: "devlog", category: Array[3], age : 1}
위에서 extracted 객체를 선언할 때 사용한 방식은 아래와 같은 의미이다.
const extracted = {
name : name,
category : category,
age : age
}
이번엔 두 번째 방법, 한 번에 모두 추출하는 방법을 알아보자.
const deepObject = {
state : {
information : {
name : 'devlog',
category : ['js', 'algorithm', 'java']
}
},
age : 1
};
const {
state : {
information : { name, category }
},
age
} = deepObject;
const extracted = {
name,
category,
age
};
console.log(extracted);
이렇게 하면 깊숙이 안에 들어있는 값도 객체에서 바로 추출할 수 있다.
'JavaScript' 카테고리의 다른 글
[Jest] Javascript Test 코드 작성하기 (4) | 2019.11.29 |
---|---|
[Javascript] 자바스크립트 엔진, Event Loop, Event Queue, Call Stack (0) | 2019.08.07 |
[Javascript] Promise 이해하기 (0) | 2019.08.01 |
[Javascript] callback(콜백) 개념 이해하기 (2) | 2019.07.17 |
[Javascript]자바스크립트 기초-변수와 상수(var,let,const) (2) | 2019.07.16 |