소년코딩

타입이란 자바스크립트 엔진에서 어떤 값을 다른 값과 분변할 수 있는, 고유한 내부 특성의 집합이다.

타입별로 내재된 특성을 제대로 알고 있어야, 값을 다른 타입으로 변환하는 방법을 정확히 이해할 수 있다.


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"

nulltypeof 연산 결과가 "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 소년코딩

추천은 글쓴이에게 큰 도움이 됩니다.

악플보다 무서운 무플, 댓글은 블로그 운영에 큰 힘이됩니다.

댓글 로드 중…

블로그 정보

소년코딩 - 소년코딩

소년코딩, 자바스크립트, C++, 물리, 게임 코딩 이야기

최근에 게시된 이야기