원시 자료형
(Primitive type data)
타입 종류 : Number, String, Boolean, undefined, null, symbol
// primitive type data
let num = 1;
let copiedNum = num;
console.log(num); // 1
console.log(copiedNum); // 5
console.log(num === copiedNum); // true
copiedNum = 2;
console.log(num); // 1
console.log(copiedNum); // 2
console.log(num === copiedNum); // false
원시 자료형을 변수에 할당하면 메모리 공간(변수)에 값 자체가 저장됩니다.
원시 값을 갖는 변수를 다른 변수에 할당하면 원시 값 자체가 복사되어 전달되기 때문에
복사된 데이터를 변경하는 경우에도 원본 데이터에 영향이 가지 않습니다.
원시 자료형은 변경 불가능한 값(immutable value)입니다.
즉, 한 번 생성된 원시 자료형은 읽기 전용(read only) 값 입니다.
(Q. (let, var를 사용한 경우) 원시 자료형에 재할당할 수 있는데,
왜 원시 자료형이 변경 불가능한 값입니까?
A. 원시 자료형을 재할당하면
원시 값을 저장할 새로운 메모리 공간을 확보한 뒤,
그 공간에 재할당 할 값을 저장하고,
기존의 원시 값은 메모리에서 삭제하기 때문입니다.)
참조 자료형
(Reference type data)
타입 종류 : Array, Object, function
// Reference type data
let arr = [1, 2, 3, 4];
let copiedArr = arr;
console.log(arr); // [1, 2, 3, 4]
console.log(copiedArr); // [1, 2, 3, 4]
console.log(arr === copiedArr); // true
copiedArr.pop();
console.log(arr); // [1, 2, 3]
console.log(copiedArr); // [1, 2, 3]
console.log(arr === copiedArr); // true
참조 자료형을 변수에 할당하면 heap(힙)이라는 공간에 데이터를 저장하고,
메모리 공간(변수)에 주소값이 저장됩니다.
참조 값을 갖는 변수를 다른 변수에 할당하면 주소값이 복사되어 전달됩니다.
복사된 주소값에서 원소를 변경한 경우에 원본데이터에 영향을 미칩니다.
참조 자로형은 변경 가능한 값(mutable value)입니다.
why?
메모리 공간에는 주소값이 저장되고, heap(힙)에서 데이터가 변경되어도,
메모리 공간에 있는 주소값은 고정되어 있다.
원시 자료형 & 참조 자료형을 알아보는 시간이었습니다.
틀린 내용은 댓글로 알려주시면 감사하겠습니다.