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 |