구조분해할당이란?
배열, 객체와 같이 구조화되어 있는 iterable한 데이터를 분해시켜서 각각의 변수에 담는 것을 의미한다. iterable한 데이터란, 배열과 객체처럼 순회 가능한 데이터를 의미한다.
배열과 구조분해할당
다음은 arr 이라는 배열이 있다. 배열의 각 요소를 변수로 선언하려면 하나씩 총 5개의 변수가 필요하다.
let arr = [1, 2, 3, 4, 5];
let one = arr[0];
let two = arr[1];
...
console.log(one, two); // 1,2 출력
그런데 구조분해할당을 사용한다면, 한 줄로 코드를 줄일 수 있다.
- 좌측에는 let, const와 같은 변수 선언 키워드를 적고 대괄호 []안에 변수명을 작성한다. 이 대괄호는 배열이기 때문에 가능하다.
- 우측에는 구조분해할당 대상인 배열명 arr을 넣어준다.
즉, 우측에 있는 arr 배열을 구조 분해하여 순서대로 one, two 변수명에 각각 담아준 것이다.
let arr = [1, 2, 3, 4, 5];
// 키워드 [변수명, 변수명2] = 구조분해할당 할 배열명
let [one, two] = arr;
console.log(one, two); // 1,2 출력
객체와 구조분해할당
객체의 property와 값을 변수에 넣고 싶으면 다음 코드처럼 한줄씩 변수 선언을 해줘야 한다.
let obj = { name: "otter", gender: "male" };
let userName = obj.name;
let userGender = obj.gender;
console.log(userName, userGender); // 출력 otter, male
객체도 배열처럼 구조분해할당하여 코드를 줄일 수 있다. 하지만, 배열하고 조금 다른 형태이다.
- 객체를 구조분해하려면 {} 중괄호를 사용한다.
- 원본 객체의 key 값을 중괄호 안에 넣으면 변수로써 동작을 하게 된다. 원본 객체의 key에 해당하는 값이 연결되어서 담기게 된다.
그래서 객체의 구조분해할당은 각각의 key 로 이루어져있기 때문에, 다른 명칭은 중괄호 안에 넣지 않음을 주의해야 한다.
let obj = { name: "otter", gender: "male" };
// 중괄호안에는 객체의 key를 적어야 한다.
let { name, gender } = obj;
console.log(name, gender); // 출력 otter, male
객체의 key 값을 새로운 변수에 담고 싶다면?
- 중괄호 안에 key명을 작성하고 콜론다음 변수명을 입력한다.
- 지정된 변수명에 해당하는 key값이 연결되어 출력해보면 해당 문자열이 담겨있다.
let obj = { name: "otter", gender: "male" };
// 중괄호안에는 객체의 key와 변수명을 적는다.
let { name: userName, gender: newGender } = obj;
console.log(userName, newGender); // 출력 otter, male
'JavaScript' 카테고리의 다른 글
[자바스크립트 문법] 전역 스코프와 지역 스코프, 함수레벨 스코프와 블록레벨 스코프 (2) | 2023.12.07 |
---|---|
[자바스크립트 문법] 변수명과 함수, 조건문 활용팁 (2) | 2023.12.06 |
[자바스크립트 문법] 함수 표현식과 선언문, 화살표 함수 차이점 (0) | 2023.11.24 |
프론트엔드 포트폴리오준비 전, 참고할 사항 (0) | 2023.11.24 |
[자바스크립트 파일 링크] HTML script async와 defer 차이점 (1) | 2023.11.23 |