ES6 템플릿 리터럴
목차
템플릿 리터럴(Template literals)이란 용어는 생소하게 들릴 수 있는데 쉽게 말하면 문자열 내에 변수를 삽입하거나 표현식을 사용하는 방식입니다. C나 파이썬 등 다른 언어에서는 문자열 포맷팅(string formatting)이 비슷한 기능입니다.
프로그래밍에 있어서 문자열 처리는 가장 중요한 분야입니다. 프로그래밍 언어가 저수준에서 고수준으로 발달할 수록 점점 더 중요해지고 있는데요. 컴파일러(인터프리터)가 문자열을 처리하는 방법은 현대에 와서 많은 발전이 있었습니다. 단순히 문자열을 스크린에 출력하는 것 이상으로 그 안에 변수를 넣거나, 표현식이나 함수를 넣는 방식이 가능한 것이 템플릿 리터럴입니다.
문자열 보간(string interpolation)
문자열 보간(string interpolation)은 변수나 표현식 등을 문자열 내에 사용할 수 있습니다. 이 경우 따옴표(‘ 이나 “)가 아니라 ` 백틱 문자를 사용해서 문자열을 감쌉니다.
// 변수를 포함시킨다 let myNumber = 752; console.log(`my number is ${myNumber}`); // 표현식을 넣는다 console.log(`1 더하기 1은 ${1+1} `); // 함수 사용 function cube(x){ return x*x*x; } let myVar = 3; console.log(`cube ${myVar} : ${cube(myVar)}`); *결과: my number is 752 1 더하기 1은 2 cube 3 : 27
멀티 라인 지원(multiple lines support)
멀티 라인은 여러 줄의 문자열을 표현하는 방식입니다. 보이는 그대로 표현되는 것이 특징입니다. 일반 따옴표로는 별도로 이스케이프 문자를 사용하여 일일히 맞춰야 했습니다.
let msg = `first line second line third line forth line fifth line ${200 + 300} ` console.log(msg); *결과: first line second line third line forth line fifth line 500
백틱 이스케이프(Backtick escape)
백틱과 ${}는 백슬래시를 사용해 이스케이프 할 수 있습니다.
console.log(`backtick escape: \`(backslash)`); console.log(`$`); // works console.log(`\${}`); // works *결과: backtick escape: `(backslash) $ ${}
\n과 \도 백슬래시로 이스케이프 합니다. 백틱 ` 은 소스코드의 엔터키를 CRLF(\r\n 캐리지 리턴과 라인피드)로 활용하지만 \n도 사용가능합니다. 그밖에 \b \t 등의 이스케이프 문자(escape character)가 적용됩니다.
console.log(`\\n`); console.log(`\\`);
이스케이프 raw
이스케이프를 raw 문자열로 바꾸는 prefix는 String.raw 입니다. 다만 그냥 \과 ${}은 여기서도 \ 백슬래시를 앞에 붙여야 합니다.
const str = String.raw`\b \t \n`; console.log(str);
요약
ES6 템플릿 리터럴(Template literals)은 문자열 보간(string interpolation)과 문자열 멀티 라인(multiple line)을 지원합니다. 이를 활용하여 스마트한 문자열 처리가 가능합니다.
참고링크
Template literals – JavaScript | MDN (mozilla.org)