writed by hanruy1109
const template = `Template literal`;
console.log(template); // Template literal
일반 문자열 내에서는 줄바꿈(개행)이 허용되지 않는다. 따라서 일반 문자열 내에서 줄바꿈 등의 공백을 표현하려면 백슬래시로 시작하는 이스케이프 시퀀스를 사용해야 한다.
const template = "<ul>\n\t<li>Home</li>\n</ul>";
console.log(template);
<ul>
<li>Home</li>
</ul>
일반 문자열과 달리 템플릿 리터럴 내에서는 이스케이프 시퀀스를 사용하지 않고도 줄바꿈이 허용되며, 모든 공백도 있는 그대로 적용된다.
const template = `<ul>
<li>Home</li>
</ul>`;
console.log(template);
<ul>
<li>Home</li>
</ul>
템플릿 리터럴 내에서는 표현식 삽입을 통해 간단히 문자열을 삽입할 수 있다. 표현식을 삽입하려면 ${ }
으로 표현식을 감싼다. 이 때 표현식의 평과 결과가 문자열이 아니더라도 문자열로 타입이 강제로 변환되어 삽입된다.
const first = "Amy";
const last = "Hey";
console.log(`My name is ${first} ${last}`); // My name is Amy Hey
undefined 타입의 값은 undefined가 유일하다.
var 키워드로 선언한 변수는 암묵적으로 undefined로 초기화 된다. 다시 말해, 변수 선언에 의해 확보된 메모리 공간을 처음 할당이 이뤄질 때까지 빈 상태로 내버려두지 않고 자바스크립트 엔진에 undefined로 초기화한다. 따라서 변수를 선언한 이후 값을 할당하지 않은 변수를 참조하면 undfined가 반환된다.
var foo;
console.log(foo); // undefined
undefined는 개발자가 의도적으로 할당하기 위한 값이 아니라 자브스크립트 엔진이 변수를 초기화 할 때 사용하는 값이다. 자바스크립트 엔진이 변수를 초기화하는 데 사용하는 undefined를 개발자가 의도적으로 변수에 할당한다면 undefined의 본래 취지와 어긋날 뿐더러 혼란을 줄 수 있으므로 권장하지 않는다.
심벌 타입은 ES6에서 추가된 7번째 타입으로, 변경 불가능한 원시 타입의 값이다. 심벌 값은 다른 값과 중복되지 않는 유일무이한 값으로 주로 이름이 충돌할 위험이 없는 객체의 유일한 프로퍼티 키를 만들기 위해 사용한다.
심벌은 Symbol 함수를 호출해 생성한다. 이때 생성된 심벌 값은 외부에 노출되지 않는다.
var key = Symbol("key");
console.log(typeof key); // symbol
// 객체 생성
const obj = {};
obj[key] = "value";
console.log(obj[key]); // value
데이터 타입이 필요한 이유는 다음과 같다.
따라서 변수를 사용할 때 주의할 사항은 다음과 같다.