Шаблонные строки позволяют записывать строки, охватывающие несколько строк, и включать встроенные выражения.
Пример
До шаблонных строк:
const name = "Иван";
const age = 30;
const message = "Привет, " + name + "!\n" +
"Вам " + age + " лет.";
Пример
С шаблонными строками:
const name = "Иван";
const age = 30;
const message = `Привет, ${name}!
Вам ${age} лет.`;
Шаблонные строки используют обратные кавычки (`) вместо обычных и могут включать:
- Несколько строк без использования символа перевода строки (
\n
) - Выражения внутри конструкции
${}
- Кавычки без экранирования
Пример
Многострочная строка:
const html = `
<div>
<h1>Заголовок</h1>
<p>Параграф</p>
</div>
`;
Пример
Отступы становятся частью строки:
const x = `
Джон:
Привет, как дела?
Джейн:
Все нормально!
`;
Интерполяция выражений
Любое действительное выражение JavaScript в шаблонной строке можно вставить внутрь конструкции ${}
:
Пример
Вставка переменных внутри шаблонной строки:
let firstName = "Иван";
let lastName = "Иванов";
let text = `Добро пожаловать, ${firstName} ${lastName}!`;
Пример
Вставка выражений внутри шаблонной строки:
let price = 10;
let quantity = 5;
let total = `Итого: ${price * quantity}`;
Пример
Использование метода map
внутри шаблонной строки:
const items = ["apple", "banana", "orange"];
const list = `У вас ${items.length} штук:
${items.map(item => `- ${item}`).join('\n')}`;
Пример
Использование тернарного оператора внутри шаблонной строки:
const isAdmin = true;
const message = `Статус: ${isAdmin ? 'Админ' : 'Гость'}`;
Шаблонные строки с метками
Шаблонные строки также могут использовать функции, которые называются метками, чтобы модифицировать вывод.
Функция принимает текст и выражение(-я) в качестве аргументов.
Посмотрим на примере:
Пример
Метка в шаблонной строке:
function highlight(strings, fname) {
let x = fname.toUpperCase();
return strings[0] + x + strings[1];
}
let name = "John";
let text = highlight`Hello ${name}, how are you?`;
Объяснение примера:
- Имя функции —
highlight
, вы можете назвать её как угодно. - Первый аргумент хранит текст между выражениями в виде массива.
- Элементы массива разбиты выражением.
- В нашем примере
strings[0]
содержит "Hello " иstrings[1]
содержит " how are you?". - Второй аргумент хранит выражения. В нашем примере
fname
содержит "John".
Внутри функции вы можете использовать аргументы для формирования итоговой строки и возврата её.
Пример
Метка в шаблонной строке с несколькими выражениями:
function highlight(strings, fname1, fname2) {
let x = fname1.toUpperCase();
let y = fname2.toUpperCase();
return strings[0] + x + strings[1] + y + strings[2];
}
let name1 = "John";
let name2 = "Jane";
let text = highlight`Hello ${name1} and ${name2}, how are you?`;
Пример
Метка в шаблонной строке с несколькими выражениями, хранимыми в массиве с использованием остаточного параметра:
function highlight(strings, ...fname) {
let x = fname[0].toUpperCase();
let y = fname[1].toUpperCase();
return strings[0] + x + strings[1] + y + strings[2];
}
let name1 = "John";
let name2 = "Jane";
let text = highlight`Hello ${name1} and ${name2}, how are you?`;