profile HaeRim's Dev Blog HTML, CSS, JS, Vue

Javascript Data Type

» javascript

Data Type

0 데이터 타입 형태

  • 숫자 타입 : var value = 123;
  • 문자 타입 : var value = "일이삼";

Data Type을 반환하고 싶다면?

typeof 연산자 사용 typeof 연산자와 같이 특별한 기능을 가진 단어를 키워드(ketword)라고 부른다.

    var point = 123;
    log(typeof point);

    var book = "";
    log(typeof book);

[실행결과]

Number  
String



0-1 데이터 타입

데이터 타입은 자료형 이라고 표기하기도 한다.

Data는 반드시 Type을 갖는다.
데이터 타입에 따라서 javascript가 처리하는 방법, 혹은 에러가 생길 수 도 있다.



0-2. 데이터 타입 분류

언어 타입과 스펙 타입 두 가지로 나눠지는데
개념만 한 번 읽어보면 좋을 듯 싶다.

언어타입 스펙타입
JS 프로그램에서 사용할 수 있는 타입 언어 알고리즘을 위한 타입 (JS에서 사용 불가)
Undefined, Null, Boolean, String, Number, Object Reference, List, Completion, Property, Descriptor, Data Block, Lexical Environment, Lexical Record 등



1. Number Type

  • 부호(+,-)를 가진 값
  • Number Type 의 특수한 값 3개
    • NaN : Not-a-Number
      값이 숫자가 아닌 것을 나타내는 값이다. 자바 스크립트는 프로그램이 죽지 않게 하려는 성향이 강하므로 값이 나오지 않을때 NaN으로 값을 표가해준다
    • Infinity : 양수 무한대
    • -Infinity : 음수 무한대

2. String Type

  • 문자 타입

3. Undefined Type

Undefined (대문자) undefined (소문자)
스펙에서 사용
    var point;
    log(point);

[ 실행결과 ]

    undefined
  • 변수에 값을 할당하지 않은 것을 나타내는 시맨틱
    변수를 선언만 한 것으로 undefined가 초깃값으로 설정된다.

4. Null Type

Null (대문자) null (소문자)
스펙에서 사용

기본적으로 Undefined와 유사해보인다. 차이점을 비교해보자.

null undefined
값을 할당해야 나옴 값을 할당하지 않으면 나옴
    //1번
    var book;
    log(book);

    //2번
    var point = null;
    log(point);

[실행결과]

    //1번 결과값
    undefined  

    //2번 결과값
    null

5. Boolean Type

  • true / flase 형태의 타입. 오직 true와 flase 값만 갖는다.

6. Object Type

  • {name : value} 형태를 갖는다.
    name과 vaule는 묶어서 property(프로퍼티) 라고 지칭한다.
    var book = {
        title: "책", point: 123
    };
    log(book);

위처럼 {} 안에 key:value 형태로 작성한다.
왼쪽 : 프로퍼티 key 또는 name
오른쪽 : 프로퍼티 값

따라서 Object는 프로퍼티 집합이다.


타입 정리

Primitive (프리미티브) Type

1. number type
2. string type
3. boolean type
4. undefined type

🤔 그런데 이상한 점!

    log(typeof null);
    log(typeof {book : "책"});

[실행결과]

    object;
    object;

null의 데이터 타입을 입력해보면 object 라고 뜬다. (ES5 기준)
ES6 에서 해당 해결방법이 나왔다고 하니 관련된 것은 나중에 다루겠다.