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의 값이 교체된다.