본문 바로가기

sparta/본캠프

[구조분해할당]

아침부터 객체에 새로운 요소를 추가하고 싶어져서 실험해보았다.

person을 만들어서 객체에 정보를 넣어주고 곧바로 아래 코드처럼 출력해보았다.

const person = {
    name: 'Alice',
    age: 25,
    city: 'seoul'
};

const { name, year=2040 } = person;
console.log(person.name) //Alice
console.log(person.year) //undefined

왜 언디파인드가 나오는지 의문이 들었다. 

person객체에 존재하지 않는 속성이기 때문에 undefined 가 나온댄다...

즉, 객체에 year이라는 속성이 존재하지 않기 때문에 나온다는 거라는데 그래서 추가하려고 한 게 아닌가?

그렇다면 어떻게 해야 객체에 새로운 속성이 존재하게 될까?

person.year = 2040;

위 코드처럼 넣어주면 된다.

그러면 새로운 속성이 객체에 생선된다.

 

그러나 걷기반에서는 아래와 같이 스프레드연산자를 이용해서 배열에 추가하는 걸 배웠다. 

그렇다면 person.year하면 2040이 나오게 될까?

const person = {
    name: 'Alice',
    age: 25,
    city: 'seoul'
};

const newperson = {
    ...person,
    year: 2040 //이건 기존객체에 새로운 요소를 추가한 게 아니다.
}

console.log(newperson)
console.log(person.name) //Alice
console.log(person.year) //undefined

역시나 undefined가 나온다. 

이유는, 스프레드 연산자는 person의 속성을 복사하여 새로운 객체를 생성하기 때문에 person.year이 아니라 newperson.year이 돼야 한다.

'sparta > 본캠프' 카테고리의 다른 글

[reduce]  (0) 2024.10.26
[Spread 및 Rest 연산자]  (1) 2024.10.26
[주말]자바스크립트 최종 (두고두고 볼 내용)  (0) 2024.10.26
[본캠프]19일차  (0) 2024.10.25
[본캠프]18일차  (0) 2024.10.24