이 글은 '모던 자바스크립트 DeepDive'를 참고하여 작성되었습니다.
''
, ""
, ``
으로 텍스트를 감싼다.템플릿 리터럴은 백틱(``
)을 사용해 표현한다.
일반적인 문자열 내에서는 줄바꿈이 허용되지 않아서 이스케이프 시퀀스를 사용해야하지만 템플릿 리터럴 내에서는 이스케이프 시퀀스를 사용하지 않고도 줄바꿈 및 공백이 허용된다.
${}
으로 표현식을 감싸 표현식을 삽입한다. 이 때 표현식 평가 결과가 문자열이 아니더라도 문자열로 타입이 변환되어 삽입된다.
true와 false
자바스크립트는 객체 기반의 언어이며, 자바스크립트를 이루고 있는 거의 모든 것은 객체이다.
자바스크립트 엔진은 데이터 타입에 따라 정해진 크기의 메모리 공간을 확보한다. 즉, 데이터 타입에 따라 확보해야 할 메모리 공간의 크기가 결정된다. 또한 값을 참조 하기 위해서는 읽어들여야 할 메모리 공간의 크기를 알아야 한다. 예를 들어, score 변수에 숫자가 할당되어 있다면 자바스크립트는 score 변수를 참조할 때 숫자 타입, 8바이트 단위로 읽어들인다.
모든 값은 데이터 타입을 가지며, 메모리에 2진수로 저장된다. 메모리에 저장된 값은 데이터 타입에 따라 다르게 해석되기 때문에 score 변수를 참조하면 메모리 공간의 주소에서 읽어들인 2진수를 숫자로 해석한다.
자바스크립트는 변수를 선언할 때 타입을 선언하지 않으며 어떠한 데이터 타입의 값이라도 자유롭게 할당할 수 있다. 자바스크립트는 값을 할당하는 시점에 변수의 타입이 동적으로 결정되고 변수의 타입을 자유롭게 변경할 수 있다.
즉, 자바스크립트는 동적 타입 언어로 동적 타이핑(할당에 의해 타입이 결정 & 재할당에 의해 타입 동적으로 변경)이라는 특징을 가진다.
동적 타입 언어는 편리하긴 하지만 변수 값을 추적하기 어렵다든가, 변수 값에 의해 타입이 변경된다든가 등의 위험이 존재한다.
ECMAScript 사양은 문자열과 숫자 타입 외의 데이터 타입을 명시적으로 규정하고 있지 않다. 따라서 문자열과 숫자 타입을 제외한 메모리 공간의 크기는 자바스크립트 엔진 제조사의 구현에 따라 다를 수 있다.