Published 2022. 11. 5. 17:59
자바스크립트의 자료형은 크게 원시 타입 과 참조 타입 으로 나뉜다.
원시 타입 (Primitive Type)
모두 하나의 값을 담고 있다.
값 자체에 대한 변경이 불가능(immutable) 하다.
예시)
let myString = "hello";
myString[0] = 'B'; // 원시 타입이기 때문에 Bye 로 변경 불가능. 오류는 Throw 되지 않는다.
console.log(myString); // bye
변수에 데이터를 재할당할 수 있다.
예시1) 문자열을 담고 있던 변수에 다른 문자열을 담을 수 있다.
let myString = "hello";
myString = "bye"; // 재할당 가능
console.log(myString); // bye
예시2) 문자열을 담고 있던 변수에 숫자를 담을 수 있다.
let myString = "korea";
console.log(myString); // korea
myString = 20;
console.log(myString); // 20
하나의 메모리에 하나의 데이터를 보관한다.
종류로는 문자(string), 숫자(number), bigint, 불리언(boolean), null, undefined, 심볼(symbol) 등이 있다.
참고) 심볼(symbol) 은 ES6 부터 추가된 타입이다.
참조 타입 (Reference Type)
변수에 할당할 때는 값이 아닌 ‘주소’ 를 저장한다.
배열, 객체, 함수 등이 대표적이다.
변수는 주소를 저장하고, 값은 특별한 동적인 데이터 보관함에 보관된다.
이 데이터 보관함을 메모리 힙이라고 한다.
값을 재할당할 경우 주소를 참조한 모든 값이 영향을 받는다. 즉, 값이 공유된다.
예시)
let obj = {
a: 1,
b: 2,
c: 3
}
let newObj = obj;
newObj.a = 100; // 참조된 값 중 a 의 값에 100 을 재할당
console.log(obj.a); // 100
// 해당 주소를 참조한 newObj 의 a 값을 바꾸었기 때문에 두 객체 모두 반환하는 a 값이 변경됨.
정리
- JavaScript 의 자료형은 크게 Primitive Type(원시 타입) 과 Reference Type(참조 타입) 으로 나뉜다.
- 원시 타입은 하나의 메모리에 하나의 값을 담고 있고 값 자체에 대한 변경이 불가능하며(immutable), 변수에 할당될 때 값을 저장하고, 값을 재할당할 수 있다.
- 원시 타입의 종류로는 문자(string), 숫자(number), bigint, 불리언(boolean), null, undefined, 심볼(Symbol) 등이 있다.
- 참조 타입은 변수에 할당할 때는 값이 아닌 ‘주소’ 를 저장하며, 값은 특별한 동적인 데이터 보관함인 메모리 힙에 보관된다.
- 참조 타입은 변수에 값을 재할당할 경우 주소를 참조한 모든 변수의 값이 영향을 받는다. 즉, 값이 공유된다.
- 참조 타입은 배열, 객체, 함수가 대표적이다.
참조
'프로그래밍 언어 > JavaScript' 카테고리의 다른 글
[JavaScript] 런타임 메모리 구조 (0) | 2022.11.05 |
---|---|
[JavaScript] 변수 선언 방식 (var/ let/ const) (0) | 2022.11.05 |
[JavaScript] 자바스크립트 언어의 특징 (0) | 2022.11.05 |
[Tip] function 은 되도록 사용하지 마세요. (2) | 2022.11.04 |
[JavaScript] for, foreach, filter, map, reduce 기능 및 퍼포먼스의 차이 (2) | 2022.09.24 |