코락 CoRock
코딩하는 락스타
코락 CoRock
  • 분류 전체보기 (393)
    • frameworks (19)
      • spring (19)
      • spring-boot (0)
      • testing (0)
    • languages (94)
      • java (39)
      • kotlin (0)
      • python (42)
      • r (13)
    • libraries (0)
    • programming (239)
      • android (13)
      • c (17)
      • cpp (22)
      • database (18)
      • design-pattern (4)
      • data-structures (11)
      • git (8)
      • hadoop (6)
      • html-css (7)
      • issue (4)
      • javascript (26)
      • jsp (34)
      • os (29)
      • php (6)
      • preferences (19)
      • etc (15)
    • discography (37)
      • k-pop (18)
      • pop (19)
    • blog (3)

블로그 메뉴

  • Programming
  • Java
  • JavaScript
  • Discography
  • K-Pop Songs
  • Pop Songs
  • Blog
  • Guestbook

공지사항

인기 글

태그

  • 파이썬
  • Android
  • python
  • linux
  • Java
  • oracle
  • r
  • javascript
  • 자바스크립트
  • Spring
  • jsp
  • CentOS

최근 댓글

최근 글

티스토리

반응형
hELLO · Designed By 정상우.
코락 CoRock

코딩하는 락스타

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

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

2019. 11. 20. 16:55
반응형

특징

  • 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에 대한 명시적인 검사는 없습니다.

  • 이 버그는 자바스크립트 첫 번째 버전의 버그입니다.
  • ECMAScript에 수정을 요청했지만, 기존의 코드가 부정적인 영향을 끼칠 우려가 있어 거부되었습니다.
  • 자세한 사항은 밑 링크를 참고
  • 참고 : https://github.com/FEDevelopers/tech.description/wiki/%E2%80%9Ctypeof-null%E2%80%9D%EC%9D%98-%EC%97%AD%EC%82%AC

     

종류

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) 기능 덕분에 몇몇 원시타입은 객체처럼 활용 할 수 있습니다.
반응형
저작자표시 비영리 변경금지 (새창열림)
    'programming/javascript' 카테고리의 다른 글
    • [33-js-concepts] 4. 명시적 변환, 암시적 변환, Nominal, 구조화, 덕 타이핑 (Implicit, Explicit, Nominal, Structuring and Duck Typing)
    • [33-js-concepts] 3. 값 타입과 참조 타입 (Value Types and Reference Types)
    • [33-js-concepts] 1. 호출 스택 (Call Stack)
    • [JavaScript] jQuery
    코락 CoRock
    코락 CoRock
    A COder dreaming of being a ROCKstar

    티스토리툴바