원시 / 참조 타입

2024. 4. 11. 16:38·Javascript

자바스크립트 자료형은 크게 2개로 분류(Primitive / Reference data type)됩니다.

💡 원시(Primitive) 타입: 데이터의 실제 값 할당 (String, Number …)
💡 참조(Reference) 타입: 데이터의 위치 값 할당 (Array, Object …)

 

원시(Primitive) 타입

  • 변수에 할당이 될 때 메모리 상에 고정된 크기로 저장이 되고 해당 변수가 원시 데이터 값을 보관합니다.
  • 변수 선언, 초기화, 할당 시 값이 저장된 메모리 영역에 직접 접근합니다.
    *변수에 새 값이 할당이 될 경우, 변수에 할당된 메모리 블럭에 저장된 값을 바로 변경합니다.
  • 종류: boolean, number, string, null, undefined
  • 각 변수 간에 원시 타입 데이터를 복사할 경우, 데이터의 값이 복사됩니다.
var x = 100;
var y = x;

x = 99;

// x에 할당된 값의 주소를 복사한 것이 아니라 값 자체를 복사하므로,
// x 값을 변경해도 y 값은 변경되지 않습니다.
console.log(y);	// 100;

 

참조(Reference) 타입

  • 참조 타입의 데이터는 크기가 정해져 있지 않습니다.
  • 변수에 할당 될 때 변수에는 데이터에 대한 참조가 저장됩니다.
    *변수의 값이 저장된 힙 메모리의 주소값을 저장한다.
  • 데이터에 대한 참조를 이용해서 변수의 값에 접근합니다.
  • 종류: Object ( array, function, object )
  • 각 변수 간에 참조 타입 데이터를 복사할 경우, 데이터의 참조가 복사됩니다.
var x = { count : 100 };
var y = x;

x.count = 99;

// x와 y는 동일한 객체를 참조하므로, x값을 변경하면, y값도 동일하게 변경됩니다. 
console.log(y.count);	// 99
  • 데이터 참조 추가 예시
var list1 = [1, 2, 3];	// 메모리 주소 : 8765e 라고 가정
var list2 = [1, 2, 3];	// 메모리 주소 : 9524d 라고 가정

var isSame = list1 === list2;	// 8765e === 9524d

// list1과 list2는 동일한 배열을 가지고있지만, 참조하는 주소가 다르므로 false입니다.
console.log(isSame);	// false

var list3 = list1;

var isSame2 = list1 === list3' // 8765e === 8765e
// list1과 list2는 같은 주소를 참조하므로 true입니다.
console.log(isSame2);	// true

 

 

 

 

 

 

 

 

 

 

[참고자료]

JavaScript - Primitive Type(원시 타입) vs Reference Type (참조 타입)에 대해 알아보자

저작자표시 비영리 변경금지 (새창열림)

'Javascript' 카테고리의 다른 글

프로미스와 Async / await  (0) 2024.04.11
프로토타입  (1) 2024.04.11
깊은 복사와 얕은 복사  (0) 2024.04.11
모듈  (0) 2024.04.11
일급객체와 함수  (0) 2024.04.11
'Javascript' 카테고리의 다른 글
  • 프로미스와 Async / await
  • 프로토타입
  • 깊은 복사와 얕은 복사
  • 모듈
URE
URE
Skill: Javascript, ReactJS, Next.js, React Native ... *블로그 이전 작업(24. 04. 11 ~ 24. 04. 15)
  • URE
    Dev++
    URE
  • 전체
    오늘
    어제
    • 분류 전체보기 (51)
      • Browser (6)
      • OS (1)
      • Javascript (14)
      • React (19)
      • Next.js (4)
      • React Native (0)
      • Architecture (1)
      • Network (3)
      • 스크랩 (3)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    JS
    Port
    리액트 코어
    브라우저
    자바스크립트
    swr
    react18
    URL
    원시타입
    javascript
    리액트
    dataFetching
    react
    TCP
    IP
    Redux
    상태관리라이브러리
    참조타입
    리덕스
    react concurrent
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
URE
원시 / 참조 타입
상단으로

티스토리툴바