DESTRUCTURING - Object Destructuring

KimsPractice·2022년 12월 12일
0

ES6의 정석

목록 보기
17/30
post-thumbnail

출처 : Nomadcoders ES6의 정석

이번파트는 object, array 등과 같은 데이터의 구조분해할당(destructuring)에 대해 알아보려한다.

구조분해할당이란 배열이나 객체의 속성을 해체하여 그 값을 원하는 변수에 다시 담을 수 있게 하는 표현식이다.

일단 기존엔 어떻게 사용했는지 예시를 보자.

// 대상오브젝트
const settings = {
  notification : {
    follow:true,
    alerts : true,
    unfollow: false
  },
  color:{
    theme:"dark"
  }
}

 if(settings.notification.follow){
  // send email
}

기존 우리는 오브젝트안의 데이터를 확인하기 위해서 위와같이 사용했었다. 기존과 같은 경우의 가장 두드러지는 문제점은 오브젝트안의 중간 데이터가 없을 시 에러를 표출한다.

그럼 구조분해할당 표현을 쓰면 어떤 이점이 있는가 살펴보자.

// 기존 접근방법
if(settings.notification.follow){
  // send email
}

// 구조분해할당로 접근
const {notification:{follow}} = settings;

비교해보면 기존엔 오브젝트 대상으로부터 차례로 진입하는 순서이지만, 구조분해할당은
타겟 오브젝트를 대상으로 왼쪽 {} 안에서 대상의 데이터모형을 파악하기 용이한 구조로 접근한다.
그리고 const 를 통해 바로 변수를 선언하여 재사용 가능하게한다.

주의점으로 구조분해 할당 시 마지막으로 접근한 데이터에 변수를 생성하는것이다. 위와 같은경우 follow만 변수선언이 된것이고 notification은 그저 follow가 notification안에 있다는걸 표시한다.

그리고 또 하나의 구조분해할당의 장점이 있다. 바로 기본값이 지정이 가능하다.

       // 대상 데이터의 접근 경로           = 타겟 오브젝트
const {notification:{follow=false} = {}} = settings;

이전에 우리는 기본값을 지정하는법을 배웠었다. 그때와 같이 기본값을 지정하면 혹여 데이터를 받지못해 undefined가 표출될 상황을 방지할 수 있다.

이를 one-line-statement라고 한다.

profile
난 그냥 살아 아주잘살아

0개의 댓글