출처 모던 자바스크립트 Deep Dive을 보고 정리한 내용입니다.
자바스크립트는 C, C++와 같은 언어에서 사용하는 것처럼 정수형(int 등), 실수형(float 등)을 구분하지 않는다. number라는 타입으로 모든 숫자 타입을 실수로 처리한다. 배정밀도 64비트 부동소수점 형식을 따른다. 또한 Infinity(양의 무한대), -Infinity(음의 무한대), Nan(산술연산불가) 값을 표현할 수 있다.
문자열은 작은 따옴표(''), 큰 따옴표(""), 백틱(``)로 표현할 수 있다.
ES6부터 도입되었으며 문자열에 멀티라인 문자열, 표현식 삽입, 태그된 템플릿 등의 기능을 지원한다.
멀티라인 문자열 : 줄바꿈과 공백이 이스케이프 시퀸스 없이 문자열 내에서 적용된다.
var template = `
<div>
<p>안녕하세요</p>
</div>`;
console.log(template)
//<div>
// <p>안녕하세요</p>
//</div>
표현식 삽입 : '${}'로 표현식을 감싸 문자열 내에서 표현식을 삽입할 수 있다.
var template = `1 + 2 = ${1+2}입니다.`
console.log(template) //1 + 2 = 3입니다.
true와 false로 표현되며 참과 거짓을 나타내는 값
자바스크립트 엔진이 변수를 초기화할 때 할당하는 개발자가 의도적으로 할당하지 않은 값
변수에 값이 없다는 것을 개발자가 의도적으로 할당한 값
ES6부터 도입되었으며 다른 값과 중복되지 않은 값으로 변경불가능한 원시타입의 값이다.
var key = Symbol('key');
console.log(typeof key) //symbol
var obj = {};
obj[key] = 'value';
console.log(obj[key]); //value
자바스크립트의 데이터 타입은 크게 원시 타입과 객체 타입으로 나뉜다. 자바스크립트는 객체기반 언어로 앞선 6개의 타입을 제외한 모든 것이 객체 타입이다.
자바스크립트는 C와 같은 정적 타입의 언어와 달리 변수의 선언단계에서 변수의 타입이 결정되지 않는 동적 타입 언어다. 그러므로 변수를 선언한 뒤 변수에 할당된 값에 따라 타입이 변화한다.
var value;
console.log(typeof value); //undefined
value = 6;
console.log(typeof value); //number
value = 'string';
console.log(typeof value); //string
value = true;
console.log(typeof value); //boolean
value = {};
console.log(typeof value); //object
value = Symbol();
console.log(typeof value); //symbol
이러한 동적타입의 언어는 코드의 유연성을 증가시키지만 신뢰성을 떨어트리는 문제점이 있다. 그러므로 변수를 사용할 때에는 다음과 같은 사항에 주의를 기울여 변수를 사용하자