자바스크립트 데이터 타입

2018-02-02

1. 식별자 이름

  • 변수와 상수, 함수 이름을 ‘식별자’라고 부름.
  • 식별자 규칙
    1. 식별자는 대문자로 시작해서는 안된다. 대문자로 시작하는 경우는 클래스뿐이다
    2. 밑줄 한개 또는 두개로 시작하는 식별자는 내부 변수에서만 사용한다.
    3. 달러 기호로 시작하는 식별자는 보통 제이쿼리 객체라는 의미이다.



2. 원시 타입과 객체

  • 자바스크립트의 값은 원시 값(primitive) 또는 객체(object)이다.
  • 문자열과 숫자 같은 원시 타입은 불변(immutable)이다.
  • 원시값은 불변이고, 원시 값을 복사/전달 할 때는 값 자체를 복사/전달 하므로, 원본의 값이 바뀌더라도 사본의 값이 따라 바뀌지 않는다.

2-1. 원시 타입 종류

  1. 숫자 : 자바스크립트의 숫자는 모두 double형식.
  2. 문자열
  3. 불리언
  4. null
  5. undefined
  6. 심볼(symbol)


불변이라는 말이 변수의 값이 바뀔 수 없다는 뜻은 아님

let str="hello";
str = "world";

str은 먼저 불변인 값 “hello”로 초기화 됐고, 다시 새로운 불변값 “world”를 할당 받음


2-2. 내장객체

  1. Array
  2. Date
  3. RegExp (정규표현식)
  4. Map, WeakMap
  5. Set, WeakSet
  6. 원시타입 중 숫자, 문자열, 불리언에는 각각 대응하는 객체 타입인 Number, String, Boolean이 있다.



3. Number, String, Boolean 객체

  • 이들 객체에는 두가지 목적이 있다.
    1. 하나는 Number.INFINITY같은 특별한 값을 저장하는 것 2.다른 하나는 함수 형태로 기능을 제공하는 것이다.
const s = "hello"; s.toUpperCase(); // HELLO
  • 자바스크립트가 일시적인 String 객체를 만들어 이 임시객체 안의 toUpperCase 함수를 호출. 함수 호출 즉시 임시 객체 파괴

4. 배열

  • 특징
    1. 배열 크기는 고정되지 않음. 언제든 요소를 추가할 수 있음
    2. 요소의 데이터 타입을 가리지 않음. 즉 문자열만 쓸 수 있는 배열이라던가 숫자만 쓸 수 있는 배열 같은 개념이 없음
    3. 배열 요소는 0으로 시작

5. 날짜

  • 현재 날짜와 시간을 나타내는 객체를 만들 때는 new Date()를 사용
  • 특정 날짜에 해당하는 객체를 만들 경우
    const date = new Date(2018, 4, 5); // 월은 0에서부터 시작. 즉 4는 5월
    getFullYear(date);  //2018
    getMonth(date); // 4
    getDate(date);  // 5
    getDay(date);   // 6 (0은 일요일)
    



6. 숫자로 바꾸기

6-1. Number 객체 생성자 사용

const numStr = "33.3";
const num = Number(numStr);

숫자로 바꿀 수 없는 문자열은 NaN이 반환된다.


6-2. parseInt() 사용

  • Number 생성자와 다른 점은 parseInt를 사용할 때는 기수(radix)를 넘길 수 있다.
  • 기수는 변환할 문자열이 몇진수 표현인지 지정. (16진수 일떄는 16으로 넘김)
  • 숫자로 판단할 수 있는 부분만 변환하고 그 뒤에 있는 문자열은 무시.
    const a = parseInt("16 volts"); //volts는 무시됨
    const b = parseInt("3a", 16); // 16진수 3a를 10진수로 바꿈. 58
    


6-3. valueOf()

Date 객체를 숫자로 바꿀 때 사용

// UTC 1970년 1월 1일 자정으로부터 몇 밀리초가 지났는지 나타내는 숫자
const d = new Date(); const ts = d.valueOf();



7. 문자열로 바꾸기

  • 문자열 병합에서 자동으로 숫자는 문자열로 변환되므로, 숫자를 문자열로 바꿀 일은 그리 많지 않음
  • 한편 배열의 toString() 메서드는 꽤 쓸만하다. 이 메서드는 각 요소를 문자열로 바꾼 다음 쉼표로 연결한 문자열을 반환한다
    const arr = [1, true, "hello"];  arr.toString();  // "1,true,hello"
    

전체 예제는 ch3.리터럴과 변수, 상수, 데이터 타입 참고.