포스트

구조 분해 할당 (Destructuring Assignment)

구조 분해 할당(Destructuring Assignment)은 배열이나 객체속성을 분해하여 개별 변수에 할당할 수 있게 하는 기능입니다.
이 기능은 한 곳에서 변수들을 선언하고 할당 받을 수 있어서 코드의 가독성을 높이는 데 유용합니다.

배열 구조 분해 할당

배열 구조 분해 할당을 사용하면 배열의 요소를 개별 변수에 할당할 수 있습니다.

1
2
3
4
5
6
7
8
let array = [1, 2, 3, 4];

// 배열 구조 분해 할당
let [first, second, third] = array;

console.log(first);  // 1
console.log(second); // 2
console.log(third);  // 3
요소 건너뛰기

배열 구조 분해 할당을 사용할 때, 필요하지 않은 요소는 건너뛸 수 있습니다.

1
2
3
4
5
6
7
let array = [1, 2, 3, 4];

// 첫 번째와 네 번째 요소만 할당
let [first, , , fourth] = array;

console.log(first);  // 1
console.log(fourth); // 4
기본값 지정

또한 해당 위치에 요소가 없는 경우, 기본값을 지정할 수도 있습니다.

1
2
3
4
5
6
7
8
let array = [1, 2];

// 기본값 할당
let [first, second, third = 3] = array;

console.log(first);  // 1
console.log(second); // 2
console.log(third);  // 3

객체 구조 분해 할당

객체 구조 분해 할당을 사용하면 객체의 속성을 개별 변수에 할당할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
let person = {  
    name: '홍길동',  
    age: 16,  
    address: '서울',  
    job: '학생'  
};

// 객체 구조 분해 할당
let { name, age, address, job = '백수' } = person;

console.log(name);  // 홍길동
console.log(age);   // 16
console.log(address);  // 서울
console.log(job);   // 학생
다른 이름으로 저장

변수 이름을 객체의 속성과 다르게 지정할 수도 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
let person = {  
    name: '홍길동',  
    age: 16,  
    address: '서울',  
    job: '학생'  
};

// 다른 변수 이름으로 할당
let { name: personName, age: personAge } = person;

console.log(personName);  // 홍길동
console.log(personAge);   // 16
기본값 지정

기본값을 지정할 수도 있습니다.

1
2
3
4
5
6
7
8
9
10
let person = {  
    name: '홍길동',  
    age: 16,  
    address: '서울'
};

// 기본값 할당
let { name, age, address, job = '백수' } = person;

console.log(job);  // 백수
중첩된 객체

중첩된 객체의 구조 분해 할당도 가능합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
let person = {  
    name: '홍길동',  
    age: 16,  
    address: {  
    city: '서울',  
    dong: '역삼동'  
	}
};

// 중첩된 객체 구조 분해 할당
let {name, age, address: {city, dong}} = person; // 객체의 프로퍼티를 변수로 사용

console.log(name); // 홍길동
console.log(city); // 서울  
console.log(dong); // 역삼동
매개변수에서 사용

또한 구조 분해 할당은 함수의 매개변수에서도 사용할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
let person = {  
    name: '홍길동',  
    age: 16,  
    address: '서울'
};

// 함수 매개변수 구조 분해 할당
function print({name, age, address, job = '백수'}) {
    console.log(`${name}${address}에 사는 ${age}${job}입니다.`);  
}

print(person); // 홍길동은 서울에 사는 16살 학생입니다.
이 기사는 저작권자의 CC BY-NC-ND 4.0 라이센스를 따릅니다.