[JavaScript] Primitive Type(원시 타입) 과 Reference Type(참조 타입)

2022. 11. 5. 17:59·프로그래밍 언어/JavaScript

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

원시 타입 (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

'프로그래밍 언어 > 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
'프로그래밍 언어/JavaScript' 카테고리의 다른 글
  • [JavaScript] 런타임 메모리 구조
  • [JavaScript] 변수 선언 방식 (var/ let/ const)
  • [JavaScript] 자바스크립트 언어의 특징
  • [Tip] function 은 되도록 사용하지 마세요.
rondeveloper
rondeveloper
  • rondeveloper
    Ron's learning record
    rondeveloper
  • 전체
    오늘
    어제
    • 분류 전체보기 (102)
      • k8s (2)
      • AWS (1)
      • 리눅스 (5)
      • Docker (8)
      • 라이브러리 & 프레임워크 (14)
        • React (2)
        • NestJS (8)
        • Spring (0)
        • Django (3)
        • FastAPI (1)
      • 웹 (2)
        • Nginx (1)
      • 프로그래밍 언어 (29)
        • HTML (0)
        • CSS (0)
        • JavaScript (21)
        • Python (3)
        • Node.js (0)
        • TypeScript (4)
        • Java (1)
      • Today I learned (9)
      • 알고리즘 (9)
        • 백준 (0)
        • 프로그래머스 (8)
        • 개념 (1)
      • 티끌모아 태산 (5)
        • 하루에 영단어 하나씩 (5)
        • 독서 (0)
      • 시행착오 (3)
      • 데이터베이스 (2)
        • MySQL (0)
      • 컴퓨터 과학 (8)
        • 네트워크 (2)
        • 운영체제 (0)
        • 데이터베이스 (2)
        • 자료구조 (4)
      • 포트폴리오 (4)
        • JJINCAFE IN SEOUL (4)
        • CODEUNICORN (0)
      • 회고 (0)
      • CICD (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Python
    도커
    iterable
    자바스크립트
    리눅스
    컨테이너
    redis
    Kubernetes
    네트워크
    Kubectl
    스택
    배열
    FastAPI
    반복문
    Til
    모듈
    생활코딩
    mysql
    기초
    typescript
    프로그래머스
    레벨2
    django
    javascript
    nestjs
    IP 주소
    조인
    typeorm
    코딩테스트
    Docker
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
rondeveloper
[JavaScript] Primitive Type(원시 타입) 과 Reference Type(참조 타입)
상단으로

티스토리툴바