[JavaScript] 'Destructuring - 구조 분해 할당'이란 무엇인가? (ES6)

2021. 6. 30. 18:59·JavaScript
목차
  1. Destructuring
  2. 객체 디스트럭처링 (Object destructuring)
  3. 예시
  4. 함수 디스트럭처링 (Function destructuring)
  5. 객체 Key 이름 변경 (Object Rename Key)
  6. 배열 디스트럭처링 (Array destructuring)
  7. 스와핑 (Swapping)
  8. 스킵핑 (Skipping ≒ Omitting)
  9. 객체 초기자 (Shorthand)
  10. 참고자료
반응형

Destructuring이란?

Destructuring

구조 분해 할당 구문은 배열이나 객체의 속성을 해체하여 그 값을 개별 변수에 담을 수 있게 하는 JavaScript 표현식입니다. [MDN]
객체나 배열에서 필요한 값을 개별 변수에 저장하는 것

객체 디스트럭처링 (Object destructuring)

const settings = {
    notifications: {
        follow: true
    },
    color: {
        theme: "yello"
    },
};

// 프로퍼티 key값을 기준으로 Destructuring되어 할당된다.
const { notifications: { follow }, color} = settings; 

console.log(follow, color); // true { theme: 'yello' }

예시

//선언
const [name, setName] = useState("");
const [password, setPassword] = useState("");

// 디스트럭처링 사용 X
const onChange = (e) => {

if (e.target.name === 'name') {
    setName(e.target.value)
  }
  else if (e.target.name === 'password')
    setPassword(e.target.value)
}  
  
  
// 디스트럭처링 사용 O  
const onChange = (e) => {
  const { target: { name, value } } = e;

  if (name === 'name') {
    setName(value)
  }
  else if (name === 'password')
    setPassword(value)
}

함수 디스트럭처링 (Function destructuring)

// 함수 인자값을 destructuring 하여 받음
function saveSettings({ notifications, color: { theme } }) {
    console.log(notifications); // { follow: true, alert: true }
    console.log(theme) //blue
}

saveSettings({
    notifications: {
        follow: true,
        alert: true
    },
    color: {
        theme: "blue"
    }
});

객체 Key 이름 변경 (Object Rename Key)

const settings = {
    color: {
        chosen_color: "dark",
    },
};

let chosenColor = "blue";
console.log(chosenColor); // blue


({color: { chosen_color: chosenColor = "light" }} = settings);
console.log(chosenColor); // dark

배열 디스트럭처링 (Array destructuring)

배열의 인덱스(index) 값 기준으로 할당

ex) React - useState 사용

 

[변수]

const days = ['Mon', 'Tue', 'Wed'];
const [one, two, three, somthing = "someday"] = days;
console.log(one, two, three, somthing); // Mon Tue Wed someday

[함수]

const days = () => ['Mon', 'Tue', 'Wed'];
const [one, two, three, somthing = "someday"] = days();
console.log(one, two, three, somthing); // Mon Tue Wed someday

스와핑 (Swapping)

let mon = "Sat";
let sat = "Mon";

console.log(`${mon} = "Sat", ${sat} = "Mon"`); // Sat = "Sat", Mon = "Mon"

//Swapping
//sat 변수에 mon값 저장 , mon 변수에 sat값 저장
[sat, mon] = [mon, sat];

console.log(`${mon} = "Sat", ${sat} = "Mon"`); // Mon = "Sat", Sat = "Mon"

배열 디스트럭처링 규칙에 따라서, [ sat, mon ] = [ mon, sat ] 변경


스킵핑 (Skipping ≒ Omitting)

const days = ['mon', 'tue', 'wed', 'thu', 'fri'];

//변수 생략 방법 => ,,, 으로 넘긴 뒤 저장 후 사용 가능
const [, , , thu, fri] = days;
console.log(thu, fri) // thu fri

필요한 값을 얻기 위해  ( , , , ) 콤마를 통해 스킵 가능


객체 초기자 (Shorthand)

const a = 'foo';
const b = 42;
const c = {};

const obj1 = { a: a, b: b, c: c }; // key 와 value 값이 동일하면
console.log(object1.b); //42

// key값 === value값 일때 사용 가능
const obj2 = { a, b, c }; // 하나로 표현 가능
console.log(object2.a); //"foo"

참고자료

https://nomadcoders.co/

 

노마드 코더 Nomad Coders

코딩은 진짜를 만들어보는거야!. 실제 구현되어 있는 서비스를 한땀 한땀 따라 만들면서 코딩을 배우세요!

nomadcoders.co

https://poiemaweb.com/es6-destructuring

 

Destructuring | PoiemaWeb

디스트럭처링(Destructuring)은 구조화된 객체(배열 또는 객체)를 Destructuring(비구조화, 파괴)하여 개별적인 변수에 할당하는 것이다. 배열 또는 객체 리터럴에서 필요한 값만을 추출하여 변수에 할

poiemaweb.com

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Object_initializer

 

객체 초기자 - JavaScript | MDN

객체는 new Object(), Object.create() 또는 리터럴 표기법 (initializer 표기법)을 사용하여 초기화될 수 있습니다. 객체 초기자(object initializer)는 0개 이상인 객체 속성명 및 관련값 쌍 목록이 콤마로 분리

developer.mozilla.org

 

반응형
저작자표시 (새창열림)
  1. Destructuring
  2. 객체 디스트럭처링 (Object destructuring)
  3. 예시
  4. 함수 디스트럭처링 (Function destructuring)
  5. 객체 Key 이름 변경 (Object Rename Key)
  6. 배열 디스트럭처링 (Array destructuring)
  7. 스와핑 (Swapping)
  8. 스킵핑 (Skipping ≒ Omitting)
  9. 객체 초기자 (Shorthand)
  10. 참고자료
'JavaScript' 카테고리의 다른 글
  • [JavaScript] ...에 대한 Spread 와 Rest
  • [JavaScript] Promise(프로미스) 란 무엇인가?
  • [JavaScript] import (상대경로 → 절대경로) path 설정 방법
  • [JavaScript] arrow function(화살표 함수) 이란 무엇인가?
꾸매코더
꾸매코더
웹 / 앱 개발자
  • 꾸매코더
    꾸매코딩
    꾸매코더
  • 전체
    오늘
    어제
    • 분류 전체보기 (96)
      • JavaScript (18)
        • Deep Dive (0)
      • React (5)
      • React-Native (9)
      • CSS (3)
      • TypeScript (1)
      • CS (10)
      • GitHub (4)
      • Clone Coding (15)
        • Kakaotalk [HTML + CSS] (10)
        • Momentum [JavaScript] (5)
      • Project (30)
        • Timer Project (14)
        • Netflix [React + Hooks] (12)
        • ToDoList [React-Native] (4)
      • 회고 (1)
  • 링크

    • Github
  • hELLO· Designed By정상우.v4.10.3
꾸매코더
[JavaScript] 'Destructuring - 구조 분해 할당'이란 무엇인가? (ES6)

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.