자바스크립트에서는 원시 타입(primitive type) 참조 타입(reference type)이라는 두 가지 자료형을 제공한다.
숫자, 불린값, null과 undefined는 원시 타입이다. 객체, 배열, 함수는 참조 타입이다.
원시 타입 데이터는 변수에 할당될 때 메모리 상에 고정된 크기로 저장되고 해당 변수가 원시 데이터 값을 보관한다.
참조 타입 데이터는 크기가 정해져 있지 않고 변수에 할당될 때 값이 직접 해당 변수에 저장될 수 없으며, 변수에는 데이터에 대한 참조만 저장된다. 참조는 참조 타입 데이터의 주소이지 해당 데이터의 값이 아니다.
각 변수 간에 원시 타입 데이터를 복사할 경우 데이터의 값이 복사된다. 다음 예제를 보자.
var x = 100; // 원시 타입 데이터를 선언 var y = x; // 값을 새 변수에 복사 x = 99; // 'x'의 값을 변경 console.log(y); // 100, 'y'의 값은 변경되지 않음
각 변수 간에 참조 타입 데이터를 복사할 경우 데이터의 참조가 복사된다. 다음 예제를 보자.
var x = {count: 100}; // 참조 타입 데이터를 선언 var y = x; // 참조를 새 변수에 복사 x.count=99; // 참조 타입 데이터를 변경 console.log(y.count); // 99, 'x'와 'y'는 동일한 참조를 담고 있으며, 따라서 동일한 객체를 가리킴
자바스크립트에서 문자열은 크기가 고정돼 있지 않지만 원시 타입처럼 동작한다. 각 변수 간에 문자열 데이터를 복사할 경우 문자열 값이 복사된 것으로 간주할 수 있다. 다음 예제를 보자.
var x = "Hello"; var y = x; x="Hi"; console.log(x); // Hi console.log(y); // Hello
자바스크립트에서 문자열은 불변적(immutable)이므로 문자열 값의 내용을 변경하는 방법은 없다.
← 이전 | 홈 | 다음 → |