[Node.js] 구조분해 할당

Cjw.dev·2023년 2월 21일

Node.js

목록 보기
1/10
// 구조분해문법

const result = {
    a : 123,
    b : {
        c : 135,
        d : 146,
    }
};

const a = result.a; // 123
const d = result.b.d; // 146
// 아래와 같이 간결하게 작성 가능
const { a, b : {d} } = result
console.log(a); // 123
console.log(d); // 146

// 배열구조분해문법

arr = [1,2,3,4,5]

const x = arr[0];
const y = arr[1];
const z = arr[4];
// 아래와 같이 간결하게 작성 가능
const [x, y, , , z] = arr; // 배열 자리가 똑같아야 함

this가 있는 경우 구조분해할당을 하지 않는다.

const candyMachine = {
    status : {
        name : "node",
        count : 5,
    },
    getCandy : function(){
        this.status.count--;
        return this.status.count;
    },
};

const getCandy = candyMachine.getCandy();
const count = candyMachine.status.count

console.log(getCandy); // 4
console.log(count); // 4

// const getCandy와 const count에 주목
// candyMachine부터 시작해서 속성을 찾아들어가야 함

const candyMachine = {
    status : {
        name : "node",
        count : 5,
    },
    getCandy(){
        this.status.count--;
        return this.status.count;
    },
};

const { getCandy , status : {count}} = candyMachine;

console.log(getCandy); // getCandy(){this.status.count--;return this.status.count;}
console.log(count); // 5

// const {변수} = 객체; 로 객체 안의 속성을 변수명으로 사용 가능
// 단, getCandy()를 실행했을 때 결과가 candyMachine.getCandy()와 달라
// count처럼 속성 안의 속성도 변수명으로 사용 가능

// this가 있는 경우 구조분해할당을 하지 않는다. 
profile
백엔드 개발 공부 기록 22.11.07 ~ ing

0개의 댓글