데이터타입(줄여서 ‘타입’이라고도 한다.)은 값의 종류를 말한다. 자바스크립트(ES6)는 7개의 데이터 타입을 제공한다. 그리고 자바스크립트의 변수는 선언이 아닌 할당에 의해 타입이 결정(타입 추론)된다.
자바스크립트는 C나 자바와 달리 정수와 실수를 구분해서 init, long, float, double 등과 같은 다양한 숫자 타입을 제공하지 않고 하나의 숫자 타입만 존재한다.
var bianary = 0b01000001; // 2진수
var octal = 0o101; // 8진수
var hex = 0x41; // 16진수
// 표기법만 다를 뿐 모두 같은 값이다.
console.log(binary); // 65
console.log(octal); // 65
console.log(hex); // 65
console.log(binary === octal); // true
console.log(octal === hex); // true
console.log(1 === 1.0); // true
console.log(10 / 0); // Infinity
console.log(10 / -0); // -Infinity
console.log(1 * 'String'); // NaN
문자열은 작은따옴표(’’), 큰따옴표(””), 백틱(``)으로 텍스트를 감싼다.
var string = hello; // ReferenceError: hello is not defined
템플릿 리터럴은 멀티라인 문자열, 표현식 삽입, 태그드 문자열 등 편리한 문자열 처리 기능을 제공한다. 템플릿 리터럴은 백틱(``)을 사용해 표현한다
var first = 'Ung-mo';
var last = 'Lee';
console.log('My name is' + first + ' ' + last + '.'); // My name is Ung-mo Lee.
console.log(`My name is ${first} ${last}.`); // My name is Ung-mo Lee.
var str = `Hello
world.;
//SyntaxError: Invalid or unexpected token
var first = 'Ung-mo';
var last = 'Lee';
// ES6: 표현식 삽입
console.log(`My name is ${first} ${last}.`); // My name is Ung-mo Lee.
논리적 참, 거짓을 나타내는 true, false 값을 말한다.
undefined 타입의 값은 undefined가 유일하다. var 키워드를 선언한 변수는 암묵적으로 undefined로 초기화된다.
null 타입은 null이 유일하다. 자바스크립트는 대소문자를 구분하므로 null은 Null, NULL 등과 다르다.
변경 불가능한 원시 타입의 값이다. 심벌 값은 다른 값과 중복되지 않는 유일무이한 값이다.
자바스크립트는 객체 기반의 언어이며, 자바스크립트를 이루고 있는 거의 모든 것이 객체라는 것이다.
값은 메모리에 저장하고 참조할 수 있어야 하는데 메모리에 값을 저장하려면 먼저 확보해야 할 메모리 공간의 크기를 결정해야 한다. 이 과정에서 데이터 타입이 설정 되어야 메모리 공간 낭비와 손실 없이 값을 저장할 수 있는지 알 수 있다. 또한 참조하는 과정에서 데이터 타입을 알아야 훼손되지 않은 값을 얻을 수 있다.
자바스크립트의 변수는 선언이 아닌 할당에 의해 타입이 결정(타입 추론)된다. 그리고 재할당에 의해 변수의 타입은 언제든지 동적으로 변할 수 있다. 이러한 특징을 동적 타이핑이라하며 이러한 언어를 동적 타입 언어라 한다.
var foo;
console.log(typeof foo); // undefined
foo = 3;
console.log(typeof foo); // number
foo = 'Hello';
console.log(typeof foo); // string
foo = true;
console.log(typeof foo); // boolean
foo = null;
console.log(typeof foo); // object
foo = Symbol();
console.log(typeof foo); // symbol
동적 타입 언어 자바스크립트에 대해 공부하며 TypeScript의 유용성이 궁금해지기 시작했다. 머지 않아 TypeScript를 공부하게 될 텐데 타입 선언의 중요성을 인지하며 공부를 해야겠다.