- 자바스크립트는 두 가지 종류의 데이터 타입을 가진다.
🍣 원시 타입과 참조 타입이다.- 원시 타입은 Number, String, Boolean, null, undefined가 있다.
- 참조 타입은 함수, 객체, 배열이 있다.
- 이 두 타입 모두 선언되면서 메모리를 차지하게 된다.
- 자바스크립트는 동적 타이핑으로 변수를 선언할 때, 타입을 지정하지 않는다.
- 따라서, 자바스크립트의 변수는 기존의 변수와 다른 타입의 변수가 재할당될 수 있다.
Number, String, Boolean, null, undefined
원시타입의 값을 가지는 변수를 다른 변수에 할당하면, 이 새로운 변수는 기존의 변수와 다른 메모리 공간에 새로이 값을 할당받는다.
const a = 100;
let b = a;
b++;
console.log(a, b); // 100 101
기존의 원시타입 배열에 새로운 값을 할당하면, 새로운 메모리 공간을 할당받고 연결이 해제된 기존의 값이 있는 메모리 공간은 추후 가비지 컬렉터에 의해서 메모리 할당이 해제된다.
원시 타입 데이터는 콜 스택(Call Stack)에 저장된다.
함수, 객체, 배열
참조 타입의 값을 가지는 변수를 다른 변수에 할당하면, 이 새로운 변수는 기존의 변수와 같은 메모리 공간을 참조하게 된다.
const a = [100];
const b = a;
b.push(-7);
console.log(a, b); // [100, -7] [100, -7]
console.log(a === b); // true