[33-js-concepts] 2. 원시 자료형 (Primitive Types)

특징

  • JavaScript의 모든 Type은 원시타입(Primitive Type) 6개와 객체타입(Object Type) 1개로 총 7개 입니다.
  • 원시타입은 불변적입니다.
  • 원시 타입은 값(value)으로 저장, 객체들은 참조(reference)로 저장 됩니다. 
  • 어떠한 메소드를 가지고 있지 않습니다.
  • Type을 알고 싶으면 typeof 를 쓰면 됩니다.

 

typeof null === 'object' 인 이유

  • null은 원시타입 인데 객체 타입이라고 나타내고 있습니다.
  • typeof가 검사하는 방식

1. undefined인지 검사

2. 해당 값이 객체 태그를 가졌는지 검사

3. 숫자, 문자, 참/거짓 검사

※ null에 대한 명시적인 검사는 없습니다.

1. undefined 인지 검사
2. 해당 값이 객체 태그를 가졌는지 검사
3. 숫자, 문자, 참/거짓 검사
※ null에 대한 명시적인 검사는 없습니다.

종류

typevalue

String 모든 문자열
Number 정수, 실수, NaN, infinity
Boolean true, false
Null null
Undefined undefined
symbol unique key

 ※ symbol은 ES6 에서 새로 추가됨

 

null 과 undefined

  • null과 undefined가 가질 수 있는 값은 위의 표와 같이 단 하나 뿐입니다.
  • 둘은 모두 존재 하지 않는 것을 나타냅니다.
  • null은 존재 하지않음 이라는 값
  • undefined는 정의 되지않음 이라는 값

 

 

Symbol

  • 유일한 토큰을 나타내기 위해 ES6에서 도입한 새 원시 타입(Primitive Type)입니다.
  • 심볼은 항상 유일, 어떤 심볼과도 일치 하지 않습니다. (Object Type과 유사)

  • 특징
    1. symbol의 값을 외부에 노출시키지 않습니다. 
    2. 객체의 프로퍼티를 symbol로 만들면 Object.getOwnPropertyNames() 반환 값에서 제외됩니다.
    3. value에 접근할 때는 []를 통해 접근해야 한다. .을 통해 접근하면 undefined가 반환됩니다.

Wrapper Object

  • 원시 타입의 객체 형태입니다.
  • 원시타입에서 new 키워드로 생성할 수 있습니다.
  • Wrapper Object가 있기때문에 원시타입에서도 생성자 및 해당 메소드를 사용할 수 있습니다. 
  • Wrapper Object가 없는 원시타입도 있습니다. (null, undefined)

 

AutoBoxing

  • 원시 타입(Primitive Type)이 생성자(constructor) 및 해당 메소드(method)를 쓸수 있는 이유
  • 원시 타입(Primitive Type)에서 특정 property나 method를 호출하려고 할때 javascript는 임시로 Wrapper Object로 변환하여 접근 합니다.

정리

  1.  자바스크립트에서 타입은 6개의 원시타입(Primitive Type)과 1개의 객체타입(Object Type)으로만 이루어져 있습니다.
  2.  원시타입(Primitive Type)이 아닌 것은 모두 객체타입(Object Type)입니다.
  3.  String, Number, Boolean, Symbol 은 원시타입이면서 객체입니다. (Wrapper Object)
  4.  javascript 내부에서 동작하는 오토박싱(AutoBoxing) 기능 덕분에 몇몇 원시타입은 객체처럼 활용 할 수 있습니다.

댓글(0)

Designed by JB FACTORY