자바스크립트 데이터 타입
2018-02-02
1. 식별자 이름
- 변수와 상수, 함수 이름을 ‘식별자’라고 부름.
- 식별자 규칙
- 식별자는 대문자로 시작해서는 안된다. 대문자로 시작하는 경우는 클래스뿐이다
- 밑줄 한개 또는 두개로 시작하는 식별자는 내부 변수에서만 사용한다.
- 달러 기호로 시작하는 식별자는 보통 제이쿼리 객체라는 의미이다.
2. 원시 타입과 객체
- 자바스크립트의 값은 원시 값(primitive) 또는 객체(object)이다.
- 문자열과 숫자 같은 원시 타입은 불변(immutable)이다.
- 원시값은 불변이고, 원시 값을 복사/전달 할 때는 값 자체를 복사/전달 하므로, 원본의 값이 바뀌더라도 사본의 값이 따라 바뀌지 않는다.
2-1. 원시 타입 종류
- 숫자 : 자바스크립트의 숫자는 모두 double형식.
- 문자열
- 불리언
- null
- undefined
- 심볼(symbol)
불변이라는 말이 변수의 값이 바뀔 수 없다는 뜻은 아님
let str="hello";
str = "world";
str은 먼저 불변인 값 “hello”로 초기화 됐고, 다시 새로운 불변값 “world”를 할당 받음
2-2. 내장객체
- Array
- Date
- RegExp (정규표현식)
- Map, WeakMap
- Set, WeakSet
- 원시타입 중 숫자, 문자열, 불리언에는 각각 대응하는 객체 타입인 Number, String, Boolean이 있다.
3. Number, String, Boolean 객체
- 이들 객체에는 두가지 목적이 있다.
- 하나는 Number.INFINITY같은 특별한 값을 저장하는 것
2.다른 하나는 함수 형태로 기능을 제공하는 것이다.
- 하나는 Number.INFINITY같은 특별한 값을 저장하는 것
2.다른 하나는 함수 형태로 기능을 제공하는 것이다.
const s = "hello"; s.toUpperCase(); // HELLO
- 자바스크립트가 일시적인 String 객체를 만들어 이 임시객체 안의 toUpperCase 함수를 호출. 함수 호출 즉시 임시 객체 파괴
4. 배열
- 특징
- 배열 크기는 고정되지 않음. 언제든 요소를 추가할 수 있음
- 요소의 데이터 타입을 가리지 않음. 즉 문자열만 쓸 수 있는 배열이라던가 숫자만 쓸 수 있는 배열 같은 개념이 없음
- 배열 요소는 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.리터럴과 변수, 상수, 데이터 타입 참고.