타입이란 자바스크립트 엔진에서 어떤 값을 다른 값과 분변할 수 있는, 고유한 내부 특성의 집합이다.
타입별로 내재된 특성을 제대로 알고 있어야, 값을 다른 타입으로 변환하는 방법을 정확히 이해할 수 있다.
1. 데이터 타입
자바스크립트에는 다음 6가지 데이터 타입이 있다.
-
원시 타입: number
, string
, boolean
, undefined
, null
- 참조 타입:
object
2. typeof 연산자
값의 타입은 typeof
연산자로 알 수 있다.
값에 typeof
연산자를 적용하면 데이터 타입을 "문자열"로 반환한다.
typeof undefined === 'undefined'; // true
typeof true === 'boolean' // true
typeof 17 === 'number' // true
typeof '17' === 'string' // true
typeof {name: 'oppa'} === 'object' // true
위 코드의 5개 타입은 자신의 명칭과 동일한 문자열을 반환한다.
typeof null; // "object"
null
은 typeof
연산 결과가 "null"을 반환하면 좋겠지만 "object"를 반환하므로 버그이다.
그래서 typeof
연산자로 null값을 정확히 확인하려면 조건이 하나 더 필요하다.
var a = null;
a === null; // true
(!a && typeof a === 'object'); // true
typeof
연산자가 반환하는 문자열을 하나 더 있다.
typeof function a() { /* .. */ } === 'function'; // true
"function"이 최상위 레벨의 내장 데이터 타입처럼 보이지만 실제로는 object의 하위 타입이다.
3. 변수와 데이터 타입
값에는 타입이 있지만, 변수에는 타입이 없다. 변수는 언제라도 어떤 형태의 값을 가질 수 있다.
변수에 typeof
연산자를 적용하는 건 변수의 타입을 묻는게 아니라 이 "변수에 들어있는 값의 타입"을 묻는 것이다.
var a = 17;
typeof a; // 'number'
a = true;
typeof a; // 'boolean'
typeof
연산자의 반환 값은 언제나 문자열이라는 것을 명심해야한다.
typeof typeof 17; // "string"
by 소년코딩
추천은 글쓴이에게 큰 도움이 됩니다.
악플보다 무서운 무플, 댓글은 블로그 운영에 큰 힘이됩니다.