템플릿 리터럴은 내장된 표현식을 허용하는 문자열 리터럴입니다.
표현식/문자열 삽입, 여러 줄 문자열, 문자열 형식화, 문자열 태깅 등 다양한 기능을 제공합니다.
ES2015 사양 명세서에선 template strings라고 불렸습니다.
런타임 시점에 일반 자바스크립트 문자열로 처리/변환됩니다.
프론트엔드에서는 HTML을 데이터와 결합해서 DOM을 다시 그려야 하는 일이 빈번하기 때문에, 템플릿을 좀 더 쉽게 편집하고 작성해야 할 필요가 있어서, 이러한 기능이 추가되었습니다.
Syntax
`string text`
`string text line 1
string text line 2`
`string text ${expression} string text`
tag `string text ${expression} string text`
Description
템플릿 리터럴은 이중 따옴표 나 작은 따옴표 대신 백틱( ) (grave accent) 을 이용합니다. 템플릿 리터럴은 또한 플레이스 홀더를 이용하여 표현식을 넣을 수 있는데, 이는 $와 중괄호( $ {expression} ) 로 표기할 수 있습니다. 플레이스 홀더 안에서의 표현식과 그 사이의 텍스트는 함께 함수로 전달됩니다. 기본 함수는 단순히 해당 부분을 단일 문자열로 연결시켜 줍니다. 템플릿 리터럴 앞에 어떠한 표현식이 있다면(여기에서는 태그), 템플릿 리터럴은 "태그가 지정된 템플릿"이라고 불리게 됩니다. 이 때, 태그 표현식 (주로 함수)이 처리된 템플릿 리터럴과 함께 호출되면, 출력하기 전에 조작할 수 있습니다. 템플릿 리터럴 안에서 백틱 문자를 사용하려면 백틱 앞에 백슬러쉬(\)를 넣으십시오.
`\\`` === "`" // --> true
Multi-line strings
source 내에 삽입되는 newline characters(\n)은 template literal의 일부가 됩니다.
일반 string 들을 사용하여, multi-line strings 들을 얻기 위해서는 아래와 같은 문법을 사용해야 할 것입니다
console.log("string text line 1\\n"+
"string text line 2");
// "string text line 1
// string text line 2"
같은 효과를 template literal을 통해 얻기 위해서는, 아래와 같이 적을 수 있습니다.
console.log(`string text line 1
string text line 2`);
// "string text line 1
// string text line 2"
Expression interpolation(표현식 삽입법)
표현식(expression)을 일반 문자열(normal strings)에 삽입하기 위해서, 당신은 다음의 문법을 사용할 수 있을 것입니다.
var a = 5;
var b = 10;
console.log("Fifteen is " + (a + b) + " and\\nnot " + (2 * a + b) + ".");
// "Fifteen is 15 and
// not 20."
template literals을 이용하면, 이를 더욱 읽기 쉽도록 다음과 같은 문법 설탕(syntactic sugar) 을 활용할 수 있습니다.
var a = 5;
var b = 10;
console.log(`Fifteen is ${a + b} and
not ${2 * a + b}.`);
// "Fifteen is 15 and
// not 20."
Nesting templates
특정한 경우 템플릿을 중첩하는 것이 구성 가능한 문자열을 읽는 읽기 가장 쉬운 방법입니다. 백 스페이스 템플릿 내에서 템플릿 내의 자리 표시자${}에 내부 백틱을 사용하는 것이 쉽습니다. 예를 들어, 조건 a가 참이면:이 템플릿을 문자 그대로 반환합니다.
var classes = 'header';
classes += (isLargeScreen() ?
'' : item.isCollapsed ?
' icon-expander' : ' icon-collapser');
'Javascript' 카테고리의 다른 글
대입 연산자, 복합 연산자 (0) | 2023.08.10 |
---|---|
자바스크립트의 자료형 (0) | 2023.08.09 |
변수와 상수(var, let, const) (0) | 2023.08.03 |
encodeURI(), encodeURIComponent(), decodeURI(), decodeURIComponent() (0) | 2023.08.03 |
JavaScript / 함수 / isNaN() / 매개변수가 숫자인지 검사하는 함수 (0) | 2023.08.02 |