Deep Dive 06. 데이터 타입
데이터 타입
자바스크립트의 데이터 타입은 7개로 원시타입(숫자, 문자열, 불리언, undefined, null, symbol)과 객체 타입으로 분류 할 수 있다.
자바스크립트의 변수는 선언이 아닌 할당에 의해 타입이 결정된다. 즉, 자바스크립트는 동적 타입 언어이다. 그리고 재할당에 의해 변수 타입은 언제든지 동적으로 변할 수 있다. 이는 편리함을 제공하지만 복작한 프로그램에서는 변화하는 변수 값을 추적하기 어려울 수 있다.
숫자
C의 경우 int
, long
, float
, double
등 다양한 숫자 타입을 제공하지만 자바스크립트의 경우 하나의 숫자 타입만 존재한다.
ECMAScript 사양에 따르면 숫자 타입의 값은 배정밀도 64비트 부동소수점 형식을 따른다. 즉 모든 수를 실수로 처리한다.
1
console.log(1 === 1.0); // true
숫자 타입은 추가적으로 세 가지 특별한 값도 표현할 수 있다.
- Infinity : 양의 무한대
- -Infinity : 음의 무한대
- NaN : 산술 연산 불가(not-a-number)
1
2
3
console.log(10 / 0); // Infinity
console.log(10 / -0); // -Infinity
console.log(1 * 'String'); // NaN
심벌 타입
심벌은 ES6에서 추가된 7번째 타입으로 변경 불가능한 원시 타입의 값이다. 심벌 값은 다른 값과 중복 되지 않는 유일무이한 값이기에 이름이 충돌할 위험이 없는 객체의 유일한 프로퍼티 키를 만들기 위해 사용된다.
1
2
3
4
5
6
7
8
9
10
// 심벌 값 생성
var key = Symbol('key');
console.log(typeof key); // symbol
// 객체 생성
var obj = {};
// 이름이 충돌할 위험이 없는 유일무이한 값인 심벌을 프로퍼티 키로 사용한다.
obj[key] = 'value';
console.log(obj[key]); // value
This post is licensed under CC BY 4.0 by the author.