원시타입 vs 객체타입

  1. 원시값 → 변경불가능한 값 / 객체(참조) 타입의 값 (객체) → 변경가능한 값
  2. 변수 할당
    1. 원시값 변수(확보된 메모리 공간)에 할당 → 실제 값이 저장됨
    2. 객체를 변수에 할당 → 참조 값이 저장됨
  3. 변수를 다른 변수에 할당
    1. 원시 값을 갖는 변수 → 다른 변수에 할당 ⇒ 원본의 원시 값이 복사되어 전달 = 값에 의한 전달
    2. 객체를 가리키는 변수를 다른 변수에 할당 ⇒ 원본의 참조 값이 복사되어 전달 = 참조에 의한 전달

원시값

원시값을 할당한 변수에 새로운 원시 값을 재할당시

  1. 새로운 메모리 공간을 확보

  2. 재할당한 원시 값을 저장

  3. 변수는 새롭게 재할당한 원시 값을 가리킴

    ⇒ 변수가 참조하던 메모리 공간의 주소를 변경

이러한 특성을 불변성이라 함

문자열과 불변성

원시값 저장시 메모리 공간 크기 결정 필요 → 원시 타입별로 메모리 공간 크기 미리 정해야 함

변수를 변수에 할당했을 경우 (값에 의한 전달)

var score = 80;
var copy = score;
score = 100;
console.log(copy); // ???