string, number, boolean, undefined, symbol
let viewsCount1: number = 999;
let viewsCount2: number = viewsCount1;
viewsCount1 = 1000;
console.log("viewsCount1 is ", viewsCount1); // 1000
console.log("viewsCount2 is ", viewsCount2); // 999
viewsCount1
와 viewsCount2
는 할당문에 의해 같은 값을 가리킨다.viewsCount1
변수에 새로운 할당이 일어나면서 1000이라는 값이 메모리 주소에 새로 할당된다. 그렇게 결과적으로 viewsCount1
, viewsCount2
는 다른 값을 가지게 된다.
Array, Object, function
let array1 = [1, 2, 3];
let array2 = array1;
array1[1] = 5;
console.log(array1, array2); // [1,5,3]
array1
이 생성된다.array1
, array2
는 할당문에 의해 같은 배열을 참조하여 가리킨다.array1
배열의 Index(1)
위치에서 값의 교체가 일어난다. 동적으로 크기가 변하는 데이터를 보관하기 위한 Heap 메모리에는 배열 영역이 있기 때문에, Heap 영역에서 Index의 값이 교체된다.