Developer/Javascript

자바스크립트 레퍼런스 타입(참조타입) 이해하기

jaddong 2021. 9. 7. 19:37
320x100

Object와 Array의 경우 레퍼런스 타입이어서 아래와 같이 값이 복사되는 것 같지만 그렇지 않다.

// 변수 person과 person의 value는 각각 저장됨.
const person = {
  name: 'Max'
}

const secondPerson = person;
// 값을 그대로 복사하는 것 같지만, secondPerson이 person의 value를 가르키게 됨(포인터 값)

person.name= 'Ginny';

console.log(secondPerson);
// { name : 'Ginny' } 
// secondPerson는 동일하게 person의 value의 값을 가르키고 있으므로 영향을 받아 위와 같이 찍힘

 

별도의 person과 별개의 secondPerson을 만들기 위해서는 아래와 같이 선언해야한다.

const person = {
  name: 'Max'
}

// persond 의 값을 가져와서 새로운 변수를 만듦
const secondPerson = {
  ...person,
  age : 11
};

person.name= 'Ginny'

console.log(secondPerson);
// { name : 'Max', age: 11 } 
// person의 value가 바뀌더라도 secondPerson는 value는 정의한 것과 동일하게 유지됨
// 처음처럼 secondPerson는 person의 value를 가르키고 있지 않음
반응형