Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 명령어
- dfs
- 개발자
- 구현
- spring boot
- 프로그래머스
- 구름LEVEL
- 도커
- 스프링
- docker
- 이직
- 스프링부트
- HashMap
- bfs
- 코딩테스트
- 백엔드
- spring
- 해시맵
- 해결
- 자료구조
- Linux
- 주니어
- 스타트업
- IntelliJ
- 배열
- Java
- 문자열
- 인텔리제이
- 스프링 부트
- HTTP
Archives
- Today
- Total
마이의 개발 블로그
[JavaScript] 구조 분해 할당(destructuring assignment) 본문
반응형
구조 분해 할당이란?
배열이나 객체에서 값을 추출하여 개별 변수로 할당하는 자바스크립트의 문법입니다. 배열이나 객체에서 필요한 값만을 추출하여 사용하고싶을 때 유용하게 사용될 수 있습니다.
배열 구조 분해
1. 세 개의 문자열은 담은 배열을 구조 분해 할당하는 간단한 예시입니다. 배열 구조 분해에서는 인덱스로 값에 접근하기 때문에 작성된 변수의 순서대로 구조분해 할당이 이루어집니다. 또한 변수명을 원하는대로 지정할 수 있습니다.
const sports = ['baseball', 'football', 'tennis']
//변경 전
const sport1 = sports[0]
const sport2 = sports[1]
const sport3 = sports[2]
//변경 후
const [sport1, sport2, sport3] = sports
2. 이런 식으로 split 메서드와 함께 사용할 수도 있습니다.
const str = '속성1 속성2 속성3'
//변경 전
const properties = str.split(' ')
const property1 = properties[0]
const property2 = properties[1]
const property3 = properties[2]
//변경 후
const [property1, property2, property3] = str.split(' ')
객체 구조 분해
1. 객체의 정보를 프린트하는 함수 예시입니다. user 객체를 받아 이름과 나이를 출력하는데, user 객체를 구조 분해할당 하여 아래처럼 리팩토링할 수 있습니다. 구조 분해 할당되는 변수명은 객체의 프로퍼티명과 일치해야 합니다.
const user = {
name: 'Mai',
age: 30
};
//변경 전
const printUserInfo = (user) => {
console.log(`이름: ${user.name}`)
console.log(`나이: ${user.age}`)
}
//변경 후
const printUserInfo = ({name, age}) => {
console.log(`이름: ${name}`)
console.log(`나이: ${age}`)
}
2. 변수에 객체를 구조 분해 할당하는 예시입니다. 만약 객체의 프로퍼티가 늘어날 경우 코드를 간결하게 작성할 수 있다는 장점이 있습니다.
//user 객체
const user = {
name: 'Mai',
age: 30
};
//변경 전
const name = user.name
const age = user.age
//변경 후
const {name, age} = person
주의할 점
배열을 구조 분해 할당하는 경우 변수명을 원하는대로 지정할 수 있습니다. 반면 객체를 구조 분해 할당하는 경우에는 객체 내의 프로퍼티명과 일치하도록 변수명을 설정해야 합니다.
반응형
'개발지식 > JavaScript' 카테고리의 다른 글
[JavaScript] 논리 연산 시 알아두면 유용한 Truthy와 Falsey (0) | 2023.09.19 |
---|
Comments