
자바스크립트는 7개의 데이터 타입을 제공한다. 이는 6개의 원시 타입과 하나의 객체 타입으로 분류된다.
원시 타입
객체 타입 : 객체, 함수, 배열 등
자바스크립트에서 숫자 타입은 정수, 실수를 구분하지 않고 모든 수를 실수로 처리한다. 따라서 정수로 표시되는 수끼리 나누더라도 실수가 나올 수 있다.
typeof 10; // number
typeof 10.1; // number
typeof -12; // number
console.log(1 === 1.0); // true
console.log(3 / 2); // 1.5
숫자 타입에는 Infinity, -Infinity, NaN과 같은 특별한 값도 표현할 수 있다.
console.log(10 / 0); // Infinity >> 양의 무한대
console.log(10 / -0); // -Infinity >> 음의 무한대
console.log(1 * 'string'); // NaN >> 산술 연산 불가(Not a Number)
문자열 타입은 텍스트 데이터를 나타나는 데 사용한다. 문자열은 0개 이상의 16비트 유니코드 문자의 집합으로 전 세계 대부분의 문자를 표현할 수 있다.
문자열은 작은따옴표(''), 큰따옴표(""), 벡틱(``)으로 텍스트를 감싼다.
var string;
// 아래 모두 문자열
string = '문자열';
string = '문자열';
string = `문자열`;
일반 문자열 내에서는 줄바꿈(개행)이나 표현식 삽입 등이 혀용되지 않는다. 이를 보완한 문자열 표기법이 템플릿 리터럴이다. 템플릿 리터럴은 멀티라인 문자열, 표현식 삽입, 태그드 템플릿 등 편리한 문자열 처리 기능을 제공한다.
템플릿 리터럴은 백틱(``)을 사용해 표현한다.
//멀티라인 문자열
var template = `<ul>
<li><a href="#">Home</a></li>
</ul>`;
console.log(template);
출력 결과는 다음과 같다.
<ul>
<li><a href="#">Home</a></li>
</ul>
표현식을 ${ }로 감싸면 템플릿 리터럴 내에서 사용할 수 있다.
//표현식 삽입
console.log(`1 + 2 = ${1 + 2}`); // 1 + 2 = 3
불리언 타입의 값은 true(참), false(거짓) 두가지를 말한다. 이는 참과 거짓으로 구분되는 조건에 의해 프로그램의 흐름을 제어하는 조건문에서 자주 사용된다.
undefined 타입은 undefined 값만 존재한다.
var 키워드로 선언하는 변수는 암묵적으로 undefined로 초기화된다. 즉 선언한 이후 값을 할당하지 않은 변수를 참조하면 undefined가 반환된다. 이는 자바스크립트 엔진이 수행하며, 개발자가 의도적으로 변수에 할당하는 것은 권장하지 않는다.
프로그래밍 언어에서 null은 변수에 값이 없음을 명시할 때 사용한다. 이를 이용해 이전에 변수에 할당되어 있던 값에 대한 참조를 제거할 수 있고, 자바스크립트 엔진은 해당 메모리 공간에 대해 가비지 콜렉션을 수행한다.
var foo = 'Lee';
// 이전 참조를 제거, foo 변수는 더 이상 'Lee'를 참조하지 않는다.
foo = null;
함수가 유효한 값을 반환할 수 없는 경우 명시적으로 null을 반환하기도 한다.
심벌 타입은 다른 값과 중복되지 않는 유일무이한 값을 가진다. 따라서 충돌할 위험이 없는 객체의 유일한 프로퍼티 키를 만들기 위해 사용한다.
심벌은 Symbol 함수를 호출해 생성한다.
var key = Symbol('key');
console.log(typeof key); // symbol
var obj = {};
// 이름이 충돌할 위험이 없는 유일무이한 값인 심벌을 프로퍼티 키로 사용
obj[key] = 'value';
console.log(obj[key]); // value