6장. 데이터 타입
데이터타입(줄여서 타입)은 값의 종류를 말한다. js는 7개의 데이터 타입을 제공하는데, 원시타입과 객체타입으로 분류할 수 있다.
원시타입
- 숫자타입 : 숫자. 정수와 실수 구분 없이 하나의 숫자 타입만 존재
- 문자열타입 : 문자열
- 불리언타입 : 논리적 true와 false
- undefined타입 : var 키워드로 선언된 변수에 암묵적으로 할당되는 값
- null타입 : 값이 없다는 것을 의도적으로 명시할 때 사용하는 값
- 심벌(symbol) 타입 : ES6에서 추가된 7번째 타입
객체타입 : 객체, 함수, 배열 등등
6.1 숫자 타입
C나 자바의 경우, 정수와 실수를 구분해서 int, long, float, double 등과 같은 다양한 숫자 타입을 제공한다. 하지만 js는 독특하게 하나의 숫자타입만 존재한다. 모두 실수 처리를 한다.
추가적으로 숫자 타입은 세 가지 특별한 값으로 표현할 수 있다.
Infinity : 양의 무한대
Infinity : 음의 무한대
NaN : 산술 연산 불가(not a number)
6.2 문자열 타입
문자열 타입은 텍스트 데이터를 나타내는 데 사용한다. 문자열은 0개 이상의 16비트 유니코드 문자(UTF-16)의 집합으로 전 세계 대부분의 문자를 표현할 수 있다. 문자열은 작은 따옴표(''), 큰 따옴표(""), 백틱(``)으로 텍스트를 감싼다.
다른 타입의 값과 달리 문자열을 따옴표로 감싸는 이유는 키워드나 식별자 같은 토큰과 구분하기 위해서다. 만약 문자열을 따옴표로 감싸지 않으면 js 엔진은 키워드나 식별자 같은 토큰으로 인식한다.
6.3 템플릿 리터럴
ES6부터 템플릿 리터럴이라고 하는 새로운 문자열 표기법이 도입되었다. 텔플릿 리터럴은 멀티라인 문자열, 표현식 삽입, 태그드 템플릿 등 편리한 문자열 처리 기능을 제공한다.
리터럴이란 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법이라 하며, 값이란 표현식이 평가되어 생성된 결과, 평가란 표현식을 해석해 값을 생성하거나 참조하는 과정을 말한다. 즉 리터럴이라 함은 이해할 수 있는 수단을 통해 값을 만들어 나가는 표기법인데 이 리터럴을 통해 값을 만들 수 있다.
템플릿 리터럴은 일반 문자열과 비슷해 보이지만 백틱(``)을 사용해 표현한다.
6.3.1 멀티라인 문자열
일반 문자열 내에선 줄바꿈이 허용되지 않으므로, 줄 바꿈 등의 공백(white space)을 표현하려면 백슬래시(\)로 시작하는 이스케이프시 퀀스(escape sequence)를 사용해야 한다.
\0 : Null
\b : 백스페이스
\f : 폼피드(Form Feed). 프린터로 출력할 경우 다음 페이지의 시작 지점으로 이동.
\n: 개행. 다음 행으로 이동
\r : 개행. 커서를 처음으로 이동
\t : 탭(수평)
\v : 탭(수직)
\uXXXX : 유니코드. (예를 들어 '\u1004'는 'A', '\uD55C'는 '한')
\' : 작은 따옴표
\" : 큰 따옴표
\\ : 백슬래시
예제 06-10)
var template = '<ul>\n\t<li><a href = "#">home</a></li>\n</ul>';
consloe.log(template);
template을 출력하면
<ul>
<li><a href = "#">home</a></li>
</ul>
위와 같이 생성된다. 일반 문자열은 저렇게 이스케이프 시퀀스를 사용해야 하지만. ``안에선 이스케이프 시퀀스를 사용하지 않고
<ul>
<li><a href = "#">home</a></li>
</ul>
이렇게 그대로 적어도 콘솔로 출력해 봤을 때 이 상태 그대로 출력이 된다.
6.3.2 표현식 삽입
예제 06-12)
var first = 'Ung-mo';
var last = 'Lee'
//ES5 따옴표에서 문자열 연결
consloe.log('My name is ' + first + '' + last + '.')
//ES6 백틱에서 문자열 연결
consloe.log(`My name is ${first} ${last}.`
일반 문자열은 즉 작은따옴표, 큰 따옴표 내에선 변수명을 그대로 적어주면 되지만 템플릿 리터럴에선 즉 백틱 내에선 ${}으로 표현식을 감싼다.
6.4 불리언 타입
불리언 타입의 값은 논리적 참, 거짓을 나타내는 true, false 뿐이다. 조건문에서 많이 사용되는데 조건문 공부할 때 자세히 살펴보는 걸로.
6.5 undefined 타입
undefined 타입의 값은 undefined가 유일하다. 변수를 선언한 이후 값을 할당하지 않은 변수를 참조하면 undefined가 반환된다.
6.6 null 타입
null타입의 값은 null이 유일하다. js는 대소문자를 구별하므로 Null, NULL등과 다르다.
프로그래밍 언어에서 null은 변수에 값이 없다는 것을 의도적으로 명시(의도적 부재(interntional absence))할 때 사용한다. 변수에 null을 할당하는 것은 변수가 이전에 참조하던 값을 더 이상 참조하지 않겠다는 의미이다.
6.7 심벌 타입
ES6에서 추가된 7번째 타입으로 변경 불가능한 원시타입의 값이라고 한다.(난 사실 정말 처음 들어보는 타입이다)
6.8 객체 타입
js의 데이터 타입은 원시타입과 객체타입으로 분류된다. 객체는 11장에서 자세히 다루기 때문에 '객체, 함수, 배열 이런 거다'라고 생각하고 넘어가자. 하지만 js는 객체 기반의 언어이며 js를 이루고 있는 거의 모든 것이 객체라는 것이다.
6.9 - 6.10 부분은 추후에 다시 다뤄보는 걸로 하자.