자바스크립트의 자료형은 크게 원시 타입 과 참조 타입 으로 나뉜다.

원시 타입 (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) 등이 있다.
  • 참조 타입은 변수에 할당할 때는 값이 아닌 ‘주소’ 를 저장하며, 값은 특별한 동적인 데이터 보관함인 메모리 힙에 보관된다.
  • 참조 타입은 변수에 값을 재할당할 경우 주소를 참조한 모든 변수의 값이 영향을 받는다. 즉, 값이 공유된다.
  • 참조 타입은 배열, 객체, 함수가 대표적이다.

참조

https://charming-kyu.tistory.com/20

복사했습니다!