오늘 KDT 과정 중에 비구조화 할당이라는 내용을 들었습니다.
문법이 익숙해서 검색해보니까 구조 분해 할당으로 부르기도 하더라구요!
전 이게 더 익숙했습니다.😌
이번 포스트는 구조 분해 할당에 대해서 적어보겠습니다.
구조 분해 할당은 배열 혹은 객체를 해체하여 개별 변수에 값을 담는 것을 의미합니다.
✍ 배열 구조 분해
let color = ['blue', 'green', 'orange'];
let [ sky, tree, sun ] = color;
console.log(sky); // blue
console.log(tree); // green
console.log(sun); // orange
배열에서 구조 분해 할당을 이용하면, 인덱스의 순서대로 값을 담을 수 있습니다.
✍ 요소 무시하기
let color = ['blue', 'green', 'orange'];
let [ sky, , sun ] = color;
console.log(sky); // blue
console.log(sun); // orange
필요하지 않은 부분은 위와 같이 무시할 수 있습니다.
✍ 객체 구조 분해
let pikachu = { no: 25, type: '전기' };
let { no, type } = pikachu;
console.log(no); // 25
console.log(type); // 전기
객체의 구조 분해는 배열과 다르게 같은 속성명에 값을 전달합니다.
✍ 다른 속성명으로 구조 분해하기
let pikachu = { no: 25, type: '전기' };
let { no: number, type } = pikachu;
console.log(number); // 25
console.log(type); // 전기
콜론을 사용하면 다른 속성명인 변수에 저장할 수 있습니다.
🤔 왜 중간 변수(temp)가 없어도 교환(swap)이 가능할까?
구조 분해를 학습하면서 가장 궁금했던 부분입니다.
아래에는 제 나름대로 내린 결론을 적어보겠습니다.
구조 분해는 표현식의 오른쪽의 평가가 끝나면 왼쪽에 값을 할당합니다.
let a = 1;
let b = 2;
[a, b] = [b, a]
예시가 동작하는 순서는 이렇습니다.
- 오른쪽의 표현식인 [b, a]를 [2, 1]로 평가합니다.
- [a, b] = [2, 1]로 프로그램이 실행되어 할당합니다.
이 원리로 중간 변수 없이 값의 교환이 가능해집니다. (오답인가...)
이상으로 포스트를 마치겠습니다.
틀린 내용이 있다면 댓글로 지적 부탁드립니다. 갑사합니다!
'JavaScript' 카테고리의 다른 글
함수를 생성하는 여러가지 방법 (0) | 2024.09.03 |
---|---|
Express - Path에 매개변수 사용하기 (1) | 2024.09.02 |
Node.js의 생태계 (0) | 2024.08.30 |
Express - 단순하게 API 제작하기 (0) | 2024.08.30 |
Callback Hell? 거기 무서운 곳이야? (0) | 2024.08.29 |