원시 타입, 객체 타입

song·2023년 11월 25일
0

js 정보

목록 보기
12/30

메모리 영역




원시(primitive) 타입

  • number(Infinity, -Infinity, NaN도 숫자 타입), bigint, string, boolean, null, undefined, symbol

  • 원시 타입은 변경이 불가능한 값(immutable type)
// ex)
let a = 10;
a = 20;

위 코드를 메모리에서 바라보면
처음 a0x0110이라는 값이 저장
그리고 a = 20;이라고 작성하면
0x01이 아닌 새로운 공간 0x0220이라는 값이 저장된다.

즉, 0X01에 10이 20으로 수정된 것이 아니기 때문에 불변성을 가진다고 함
(변경이 불가능하다는 뜻은 메모리 영역에서의 변경이 불가능하다는 뜻. 재할당은 가능)

  • 값 자체가 메모리에 들어있음

  • copy by value (값 자체가 복사)
// ex)
let x = 1;
let y = x;	// y=1
y = 2;	// x=1 y=2



객체 타입

  • array, function (원시 타입 이외의 모든 값)
  • 객체 타입은 변경 가능한 값(mutable value)
  • 참조값, 즉 메모리 주소가 변수에 들어있음
  • copy by reference (참조값이 복사되어 전달됨) 참조값: 메모리 주소, 레퍼런스
// ex)
let fruit ={
    name : 'apple',
    color : 'red',
}
let food = fruit;	// food = fruit값을 가지고 있는 주소값
food.name = 'melon'; // fruit.name에 'apple'이 'melon'으로 변경됨

fruit는 메모리 영역에서 스택에 저장된다.

fruit의 인스턴스 값

{
   name: 'apple',
   color: 'red'
}

는 메모리 영역에서 에 저장된다.

profile
인간은 적응의 동물

0개의 댓글

관련 채용 정보