
모던 자바 스크립트 Deep Dive
를 공부하며 정리하는 글입니다.
데이터 타입(타입)
- 값의 종류
- 자바스크립트의 모든 값은 데이터 타입을 갖는다.
- 자바스크립트(ES6)은 7개의 데이터 타입을 제공한다.
- 7개의 데이터 타입은 원시 타입과 객체 타입으로 분류할 수 있다.
구분
- 원시 타입
- 숫자 타입 : 숫자, 정수와 실수 구분 없이 하나의 숫자 타입만 존재
- 문자열 타입 : 문자열
- 불리언 타입 : 논리적 참(true)과 거짓(false)
- undefined 타입 : var 키워드로 선언된 변수에 암묵적으로 할당되는 값
- null 타입 : 값이 없다는 것을 의도적으로 명시할 때 사용하는 값
- 심벌(symbol) 타입 : ES6에서 추가된 7번째 타입
- 객체 타입
1. 숫자 타입
- C나 Java의 경우 정수와 실수를 구분해서 int, long, float, double 등과 같은 다양한 숫자 타입을 제공한다.
- 자바스크립트는 독특하게 하나의 숫자 타입만 존재한다.
- ECMAScript 사양에 따르면 숫자 타입의 값은 배정밀도 64비트 부동 소수점 형식을 따른다.
- 모든 수를 실수로 처리하며, 정수만 표현하기 위한 데이터 타입이 별도로 존재하지 않는다.
// 모두 숫자 타입
var integer = 10; // 정수
var double = 10.12; // 실수
var negative = -20; // 음의 정수
- 정수, 실수, 2진수, 8진수, 16진수 리터럴은 모두 메모리에 배정밀도 64비트 부동소수점 형식의 2진수로 저장된다.
- 자바스크립트는 2진수, 8진수, 16진수를 표현하기 위한 데이터 타입을 제공하지 않기 때문에 이들 값을 참조하면 모두 10진수로 해석된다.
var binary = 0b01000001; // 2진수
var octal = 0o101; // 8진수
var hex = 0x41; // 16진수
// 표기법만 다를 뿐 모두 65라는 같은 값이다.
- 자바스크립트의 숫자 타입은 정수만을 위한 타입이 없고 모든 수를 실수로 처리한다.
- 정수로 표시된다 해도 사실은 실수라는 것을 의미한다.
- 따라서 정수로 표시되는 수끼리 나누더라도 실수가 나올 수 있다.