자바스크립트에는 원시 타입과 참조 타입이라는 두가지 자료형이 있다.
- Primitive Type(원시 타입) : 데이터의 실제 값 할당
- Reference Type(참조 타입) : 데이터의 위치 값만 할당
자바스크립트에서 원시 타입의 데이터(primitive type data; 원시 자료형)는 객체가 아니면서 method를 가지지 않는 타입을 말한다.
- 불린(Boolean)
- 숫자(Number)
- 문자열(String)
- undefined
- null
- bigint
- symbol
각 변수 간에 원시 타입 데이터를 복사할 경우 데이터의 값이 복사된다.
ex)
var x = 100; // 원시 타입 데이터를 선언
var y = x; // 값을 새 변수에 복사
x = 99; // 'x'의 값을 변경
console.log(y); // 100; , 'y'의 값은 변경되지 않음
여기서 var x = 100;
이라는 데이터의 값을 복사하기 때문에, console을 실행하기 전에 x를 99로 바꾸었지만 이전의 값인 100을 복사해뒀기 때문에 100이 찍힌다.
자바스크립트에서 원시 타입(Primitive Type)이 아닌 타입들을 말한다.
- 객체(Object)
- 배열(Array)
- 함수(function)
각 변수 간에 참조 타입 데이터를 복사할 경우, 데이터의 참조가 복사된다.
ex)
var x = { count : 100 }; // 참조 타입을 선언
var y = x; // 참조를 새 변수에 복사
x.count = 99; // 참조 타입 데이터를 변경
console.log(y); //99 , 'x'와 'y'는 동일한 참조를 담고 있기 때문에 동일한 객체를 가리킨다.
여기서 변수 x와 y는 동일한 참조를 담고 있다.
그래서 변수 y값에 { count : 100 }
이라는 데이터의 참조는 변수 x값에도 동일하게 담고 있다.
그래서 변수 x의 count가 99로 바뀌면 y도 99로 변경된다.
원시 자료형은 고정된 크기의 보관함을 사용한다.
참조 자료형은 동적으로 크기가 변하는 특별한 보관함을 사용한다.