관리 메뉴

평행우주 : world 1

[JS] const 에 object를 선언하는 경우 본문

텃밭 2 : FE/JavaScript

[JS] const 에 object를 선언하는 경우

parallelworlds 2022. 1. 6. 04:48

 

const 값이 바뀌는 경우가 생겨, 그 이유를 탐구했다

 

 

const에 object를 선언 했을 때,  결과 값이 바뀌는 경우가 발생하는 이유

 

 

이를 이해하기 위해서는 '변수가 무엇을 담는 지'에 대한 이해가 필요하다.

변수에 할당되는 값은  primitive 와 object로 구분된다.

 

primitive 값( boolean, null, undefined, number, string)은 데이터 자체가 변수에 담겨 있어

데이터 자체가 복사되어서 들어오지만, 

 

object 는 이 object를 가리키고 있는 주소(reference)가 들어있기 때문에

그 주소만 복사 되어서 들어온다

 

따라서 변수 const에 object를 할당하는 경우 항상 같은 reference를 찾아 출력이 될 것이고,

reference 자체는 변화가 없겠지만, reference내의 값이 달라지면 결국 다른 결과 값이 출력된다. 

 

 

 

 

 

 

Object equality by reference

 

const worlds1 = {name: 'love'};
const worlds2 = {name: 'love'};
const worlds3 = worlds1

console.log(worlds1 == worlds2);      // case1 : F
console.log(worlds1 === worlds2);     // case2 : F
console.log(worlds1 === worlds3);     // case3 : T

 

worlds1과 worlds2의 할당된 값의 문자가 같아 case1이 TRUE라고 착각할 수 있다.

 

기억해야할 건!

변수가 object 를 담을 때는 !

그 안의 값을 담는 것이 아닌 reference 를 담는다는 것!

 

Comments