모던 자바스크립트 Day 14 & 15

이현정·2022년 4월 14일
0

🔖 읽은 범위: 11장 원시 값과 객체의 비교

☘️ 책갈피

  • 자바스크립트가 제공하는 7가지 데이터 타입은 크게 원시 타입과 객체 타입으로 구분할 수 있다.(6장)

    • 원시 타입(primative type)의 값 🌟
      : 맨 처음 할당된 값이 변수에 할당된다. primative 는 original 과 동의어다.
      1) 변경 불가능한 값 (immutable value)
      2) 원시 값 변수에 할당 시 변수(확보된 메모리 공간)에는 "실제 값"이 저장된다.
      3) 값에 의한 전달(pass by value) 변수를 다른 변수에 할당하면 원본의 원시 값이 복사되어 전달된다.

    • 객체 타입(object/reference type)의 값 🌟
      : {},[], function 등으로, 변수에 해당 타입의 값이 직접 저장되는게 아니라 그 값이 담긴 메모리셀의 주소가 할당된다.
      1) 변경 가능한 값(mutable value)
      2) 객체를 변수에 할당하면 변수(확보된 메모리 공간)에는 참조 값(메모리 공간 주소)이 저장된다.
      3) 참조에 의한 전달(pass by reference): 객체를 가르키는 변수를 다른 변수에 할당하면 원본의 참조 값이 전달된다.

    잠깐! 값에 의한 전달 과 참조에 의한 전달
    정확히 말하자면 둘다 값에 의한 전달이다. 다만 메모리 공간 안에 저장된 값이 실제 값이냐 메모리 공간 주소(참조값)이냐의 차이일 뿐.
    이러한 사실 때문에 어떤 곳에서는 뭉뚱그려 "공유에 의한 전달" 이라고 하기도 한다.

?의문점

x

‼️ 느낀점

  • 저번 데이터 타입(6장) 다룰 때도 느꼈지만 메모리 셀에 대한 설명이 너무 좋다.
    메모리 셀 그림과 함께 봐야 이해가 정말 잘되는데, 여기 블로그 글에서
    원시값의 메모리 할당 상태와 객체의 메모리 할당 상태를 책의 그림과 함께 잘 정리해두었다.

💖 요약

  • 원시 타입의 값과 객체 타입의 값의 차이에 대해서 배워보았다.
  • 원시 타입은 1) 메모리에 실제 값이 할당되며 2) 재할당을 한다해도 기존 메모리 값이 사라지는 게 아닌 새로운 메모리 셀에 새로운 값으로 저장이 되고 그 메모리 주소가 변수에 할당되는 식이다. 즉, 기존에 할당된 원시값은 기존 메모리에 변하지 않은 상태로 남아 있다. 따라서 기존 값은 변경 불가능하다. 3) 이 때 각 메모리에 저장되는 값은 실제 값(ex. var score = 80; 이라고 설정하면 그 메모리에 저장되는 값은 80)이다.
  • 객체 타입은 1) 메모리에 객체 안의 프로퍼티 값이 저장되어있는 메모리 주소(참조 값)이 할당 되며 2) 객체를 수정하거나 무언가를 더할 시 참조 값을 가진 객체 변수는 변하지 않고, 그 참조 값의 메모리의 프로퍼티 값은 수정이 된다. (변경 가능)

0개의 댓글