본문 바로가기

프로그래밍/javascript&typescript

참조와 복사

let a = 10; 
let b = a; 

b=20; 

console.log(a);

 

위와 같은 코드가 있을 때 콘솔에 찍혀나오는 결과 값은 무엇인가? 

답은 10이다. 

 

그럼 다음 코드를 확인해보자.

 

let o = {
	isLoading: false
}
let o2 = o; 

o2.isLoading = true; 

console.log(o.isLoading);

 

위 코드에서 콘솔에 찍히는 결과 값은 무엇일까? 

답은 true다. 

 

언뜻 동일해보이지만 결과값이 상이한 두 코드의 차이점은 변수에 담기는 데이터의 타입이다. 

첫번 째 코드는 변수에 기본형 데이터타입이 할당되었고, 

두번 째 코드에는 객체형 데이터타입이 할당되었다. 

 

기본형 데이터타입 (숫자, 문자,  boolean, null, undefined)들은 해당 값이 들어있는 변수를 다른 변수에 할당했을 때

그 안의 값들만 복사되어 원본 데이터와 관계가 없어진다. 

하지만 객체형 데이터타입들은 변수를 다른 변수에 할당했을 때, 원본 변수가 가지고 있던 객체의 위치 값을 복사한다. 

객체는 어느 한 곳에 저장되어있고, 그 위치 값을 옮기는 것이기 때문에 두 변수는 동일한 객체를 바라보고 있는 것이다.

 

 

 

 

복사되는 값 - 기본형 데이터 타입

참조되는 값 - 객체형 데이터 타입

 

* 객체는 어떠한 상황에서도 복사되지않고 참조된다는 사실을 알아두자

'프로그래밍 > javascript&typescript' 카테고리의 다른 글

변수와 상수  (0) 2021.09.18
식별자  (0) 2021.09.16
첫번째 프로젝트:hacker news(7) 템플릿  (0) 2021.09.15
첫번째 프로젝트:hacker news(6) 페이징  (0) 2021.09.13
javascript 환경  (0) 2021.09.12