Skip to content

구조 분해 할당 ​

구조 분해 할당은 객체나 배열에서 값을 추출하여 개별 변수에 할당하는 문법이에요. 이는 코드의 가독성과 편의성을 높여주는 중요한 특징을 가집니다.

배열 구조 분해 할당 ​

배열 구조 분해 할당은 배열의 인덱스 순서대로 값을 변수에 할당해요

jsx
const arr = [1, 2, 3];
const [a, b, c] = arr;
console.log(a, b, c); // 1, 2, 3
  • 인덱스 생략: 중간 인덱스를 생략하고 싶을 경우, 빈 자리(, 사용)로 표현할 수 있어요

    jsx
    const arr = [1, 2, 3, 4];
    const [a, , c, d] = arr;
    console.log(a, c, d); // 1, 3, 4

위와 같이 , , 로 생략할 수 있으며, 원하는 요소만 할당할 수 있어요

  • 나머지 할당 : 나머지 요소를 하나의 배열로 받을 때 ... 연산자를 사용해요

    jsx
    const arr = [1, 2, 3, 4, 5];
    const [a, b, ...rest] = arr;
    console.log(a, b, rest); // 1, 2, [3, 4, 5]

객체 구조 분해 할당 ​

객체 구조 분해는 객체에서 키를 사용하여 값을 추출하는 방식이에요. 객체는 속성 이름이 동일한 변수를 찾기 때문에, 배열과는 다르게 명시적으로 이름을 사용하여 값을 할당해요.

```jsx
const person = { name: 'John', age: 30 };
const { name, age } = person;
console.log(name, age); // John, 30
```
  • 다른 변수명으로 할당하기: 객체 구조 분해를 할 때, 다른 이름으로 값을 할당할 수도 있어요.(변수명이 다를 때 유용해요.)

    jsx
    const person = { name: 'John', age: 30 };
    const { name: fullName, age: yearsOld } = person;
    console.log(fullName, yearsOld); // John, 30
  • 기본값 할당: 객체의 속성이 없을 경우, 기본값을 지정할 수 있어요.

    jsx
    const person = { name: 'John' };
    const { name, age = 25 } = person;
    console.log(name, age); // John, 25
  • 나머지 객체 할당 (Rest Operator ...): 객체에서 특정 속성을 제외하고 나머지 속성들을 하나의 객체로 받을 수 있어요.

    jsx
    const person = { name: 'John', age: 30, country: 'USA' };
    const { name, ...rest } = person;
    console.log(name); // John
    console.log(rest); // { age: 30, country: 'USA' }

2. 객체 초기자 (Object Property Shorthand) ​

객체를 선언할 때, 이미 존재하는 변수를 객체의 속성으로 간단하게 넣을 수 있는 방법이에요. 객체의 속성명과 변수명이 동일하다면, 해당 속성명을 생략할 수 있어요.

jsx
   const a = 1;
   const b = 2;
   const obj = { a, b }; //`{ a: a, b: b }`와 동일
   console.log(obj); // { a: 1, b: 2 }
   ```