반응형

 

 

 

🌈 자바스크립트의 원시 타입과 참조 타입

 

 

 

 

자바스크립트는 원시 타입(Primitive Type)과 참조 타입(ReferenceType)이라는 두 가지 타입의 자료형을 제공한다. 

 

 

 

 

1️⃣ 원시 타입 (Primitive Type)

 

원시 타입에는 아래와 같이 여섯 가지가 있으며, 이 외의 모든 값은 객체(참조) 타입이다. 

 

◾ 숫자(Number, BigInt)

◾ 불리언(Boolean)

◾ null

◾ undefined

◾ 문자열(String)

◾ Symbol

 

원시 타입 데이터는 변수에 할당될 때 메모리 상에 고정된 크기로 스택 영역에 저장되고 해당 변수는 원시 데이터의 값을 보관한다. 

 

또한, 원시 타입 자료형은 변수 선언, 초기화, 할당 시 값이 저장된 메모리 영역에 직접적으로 접근한다.

즉 변수에 새 값이 할당될 때 변수에 할당된 메모리 블록에 저장된 값을 바로 변경한다는 뜻이다. (Access By Value)

 

 

✅ 원시 타입은 값 자체를 복사하기 때문에 원본 데이터의 값이 바뀌더라도 기존 데이터의 값을 유지한다.

let origin = 100;
let copy = origin;

console.log(copy); // 100

origin = 200;
console.log(copy); // 100

 

 

 

 

2️⃣ 참조 타입 (ReferenceType)

 

참조 타입에는 객체(Object)배열(Array)함수(function)가 있다. 

 

참조 타입 데이터는 크기가 정해져 있지 않고 변수에 할당될 때 값이 직접 해당 변수에 저장되는 것이 아니라, 변수의 값이 저장된 힙(Heap) 메모리의 주소 값을 저장한다. 

 

따라서 참조 타입은 변수의 값이 저장된 메모리 블록의 주소를 가지고 있기 때문에, 변수가 가지고 있는 메모리 주소를 이용해서 변수의 값에 접근한다. (Access By Reference )

 

 

참조 타입은 주소 값을 참조하기 때문에, 원본 데이터의 값이 바뀌면 복사한 데이터의 값도 변경된다.

 

> 관련 글 :: [JS] 참조 타입의 얕은 복사와 깊은 복사(Shallow Copy & Deep copy)

 

let origin = {
	name: 'Jinny'
}
let copy = origin;

console.log(copy.name); // Jinny

origin.name = 'Mr.Lee';

//origin과 copy는 동일한 주소값을 참조하기 때문에 같은 객체를 나타낸다.
console.log(copy.name); // Mr.Lee

 

 

 

 

📌 참고사이트

 

MDN ::: JavaScript의 타입과 자료구조

 

 

 

 

 

 

 

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기