원시 타입 & 참조 타입

결론

원시 타입에는 숫자, 문자열, 불리언, undefined, null, 심벌 타입이 있습니다.
객체(참조) 타입에는 객체, 함수, 배열 등 원시 타입에 있는 6가지 데이터 타입 이외의 모든 값이 속합니다.

설명

원시 타입

  1. 숫자 타입 : 숫자(모든 수를 실수로 처리) / Infinity / -Infinity / NaN(Not-a-Number)
  2. 문자열 타입 : 텍스트 데이터
  3. 불리언 타입 : true / false
  4. undefined 타입 : undefined (자바스크립트 엔진이 변수를 초기화할 때 사용하는 값)
  5. null 타입 : null (변수에 값이 없다는 것을 의도적으로 명시할 때 사용하는 값)
  6. 심벌 타입 : ES6에 추가된 7번째 타입, 변경 불가능한 값, 다른 값과 중복되지 않는 값

객체(참조) 타입

자바스크립트는 객체 기반의 언어이며, 자바스크립트를 이루고 있는 거의 모든 것이 객체입니다.

원시 타입과 객체 타입의 3가지 다른 점

  1. 원시 타입의 값, 즉 원시 값은 변경 불가능한 값입니다. 한번 생성된 원시 값은 읽기 전용 값으로서 변경할 수 없습니다.
    객체(참조) 타입의 값, 즉 객체는 변경 가능한 값입니다.
  2. 원시 값을 변수에 할당하면 변수(메모리 공간)에는 실제 값이 저장됩니다.
    객체를 변수에 할당하면 변수(메모리 공간)에는 참조 값이 저장됩니다.
  3. 원시 값을 갖는 변수를 다른 변수에 할당하면 원본의 원시 값이 복사되어 전달됩니다. 이를 값에 의한 전달(pass(call) by value)이라 합니다.
    객체를 가리키는 변수를 다른 변수에 할당하면 원본의 참조 값이 복사되어 전달됩니다. 이를 참조에 의한 전달(pass(call) by reference)이라 합니다.

원시 값

“원시 값이 변경 불가능하다”는 말은 원시 값 자체를 변경할 수 없다는 것이지 변수 값을 변경할 수 없다는 것은 아닙니다. 불변성을 갖는 원시 값을 할당한 변수는 재할당(새로운 메모리 공간을 확보하고 그 메모리 공간에 값 저장) 이외에 변수 값을 변경할 수 있는 방법이 없습니다.

추가 학습

참고

  • 모던 자바스크립트 Deep Dive

Written by정선아
🌱 공부한 것을 기록하여 성장하기 위한 블로그입니다.

GitHubGmail