본문 바로가기

TIL

Primitive Type과 Reference Type

 

  • primitive type

- numbers, strings, booleans 

- 다른 variable에 reassign하거나 store할 때, value를 그대로 copy해서 저장

 

const num1 = 1;
const num2 = num1;
console.log(num2); //1

 

 

 

 

  • reference type

- array, object

- 다른 variable에 reassign하거나 store할 때, reference를 저장

const person = {
     name: 'Max'
};

const secondPerson = person;

console.log(secondPerson);

출력

[object Object]{
     name: "Max"
 }

 

 

 

secondPerson은 value를 copy해서 저장한 것이 아니라 person과 같은 reference를 저장

 

만약 중간에 person의 name을 바꾸면?

reference가 가리키고 있는 메모리에 저장된 값이 바뀌게 되니까

같은 메모리를 가리키고 있는 secondPerson의 값도 바뀐다.

 

const person = {
     name: 'Max'
}

const secondPerson = person;

person.name = 'Manu';

console.log(secondPerson);

출력

[object Object]{
     name: "Manu"
}

 

 

 

 

그러면 당연히 코드를 짜다 중간에 오류가 생길 수 있다.

그래서 한 object의 값을 그대로 copy해오고 싶으면 지난 시간에 배운 spread operator을 사용

 

 

const person = {
     name: 'Max'
};

const secondPerson = {
     ...person
};

person.name = 'Manu';

console.log(secondPerson);

 

[object Object]{
    name: 'Max'
};

 

중간에 person의 name을 Manu로 바꿔도 secondPerson은 그대로 Max

'TIL' 카테고리의 다른 글

Destructuring  (0) 2020.08.04
Spread & Rest Operator  (0) 2020.08.04
let과 const (feat. var) --정리 현재진행형  (0) 2020.08.03
String.prototype.split()  (0) 2020.07.20
array 비우기  (0) 2020.07.20