JavaScript/ES6+

ES6+ | Destructuring 구조 분해 할당 & 객체 확장 표현식

pathas 2020. 3. 6. 16:57

Destructuring 구조 분해 할당 & 객체 확장 표현식


객체 확장 표현식

ES6에 도입되었으며 객체 내부에서 표현식을 사용하거나
보다 편리하게 키와 키값을 저장할 수 있도록 하는 문법

  • 객체의 키에 저장할 값을 가진 변수와 키의 이름이 동일한 경우 키 이름만 작성 가능
  • 객체 생성 블록 안에 대괄호[]를 사용하여 표현식 작성 가능
  • 함수 선언 시 function 키워드 생략 가능
const x = 0;
const y = 0;
const obj = {x, y};
console.log(obj); // {x: 0, y: 0}

const randomKey = 'other';
const comObj = {
    ['the' + randomKey]: 'hello?'
}
console.log(comObj); // {theother: "hello?"}

const funcObj = {
    x,
    A(){console.log('A');},
    B(){return 0;}
}
funcObj.A(); // A
console.log(funcObj.B()); // 0

Destructuring 구조 분해 할당

배열이나 객체의 속성을 해체하여
그 값을 개별 변수에 담을 수 있게 하는 ES6 표현식

  • 배열에서 값을 추출할 때는 인덱스 순서에 맞게 변수 작성
  • 변수에 =(할당 연산자)를 사용해서 기본값 기정 가능
  • 객체에서 값을 추출할 때는 키의 이름과 동일한 변수 이름 사용
  • 객체에서 값을 추출할 때 변수에 :(콜론) 을 사용하면 새로운 변수 이름으로 키값을 추출할 수 있음
// 배열
const arr1 = [0, 1];
let [one, two, three='empty'] = arr1;
console.log(three);    // empty

console.log(one, two); // 0 1
[one, two] = [two, one];
console.log(one, two); // 1 0

// 객체
const obj = {
    key1: 1,
    key2: 2
}
const { key1, key2:_ } = obj;
console.log(key1); // 1
console.log(_); // 2

리액트에서도 자주 사용되는 ES6의 구조 분해 할당과 객체 확장 표현식에 대해 알아보았습니다.

구조 분해 할당을 사용하면 객체나 배열에서 요소를 추출할 때 각각의 값에 직접 접근하지 않아도 됩니다.

또한 객체 구조 분해 할당의 경우 변수명을 다르게 지정할 수도 있기 때문에 유용할 것으로 보입니다.

객체 확장 표현식에서 키와 동일한 이름의 변수를 키 이름만으로 키 값에 저장 가능한 것과

대괄호를 사용해서 표현식을 사용할 수 있는 것에 대해서 알아두면 좋을 것 같습니다.