DevYoon

[JS] 원시 값과 객체 비교 본문

언어/Javascript

[JS] 원시 값과 객체 비교

gimewn 2022. 6. 15. 22:05

[JS] 원시 값과 객체 비교 ✏️

1️⃣ 동적 타이핑을 지원하는 자바스크립트에서 데이터의 타입을 크게 2개로 나누는 이유는?

1️⃣ 동적 타이핑이란?

  • 변수의 타입 지정 없이 값을 할당하면 값의 타입에 따라 자동으로 타입이 결정되는 것
    int num = 3;
    JavaScript
  • const num = 3;
  • ex) Java

2️⃣ 원시타입 VS 객체타입

  • 변경 가능 여부
    • 원시타입 : 변경 불가능
    • const greeting = 'hi' ➡️ greeting[0] = 'j'; (❌)
    • 객체타입 : 변경 가능
    • const dogs = {
          first = 'cream';
          second = 'cookie';
      }
      dogs.first = '크림'; (⭕)
  • 변수에 할당
    • 원시 타입 : 변수 할당 시 실제 값이 저장
    • const num = 80;
      
      ➡️ 메모리에 80이 저장
    • 객체 타입 : 변수 할당 시 참조값(메모리 주소)이 저장
    • const obj = {};
      
      ➡️ 메모리에 참조값 (ex. 0x0001)이 저장

2️⃣ 값에 의한 전달 VS 참조에 의한 전달

  • 원시값을 가지는 변수를 다른 변수에 할당 시, 원본의 원시값이 복사되어 전달
  • const a = 100;
    const b = a;
    
    ➡️ b에는 100이 복사되어 전달
  • 객체를 가지는 변수를 다른 변수에 할당 시, 원본의 참조값(메모리주소)가 복사되어 전달
  • const a = {num:10};
    const b = a;
    
    ➡️ b에는 a의 메모리주소(ex.0X0001)이 복사되어 전달