JavaScript & TypeScriptМодуль 3: Строки и числа
Шаблонные строки
Интерполяция и многострочные строки
Цель урока
В этом уроке ты научишься:
- Использовать шаблонные строки
- Вставлять выражения в строки
- Создавать многострочные строки
Синтаксис
Шаблонные строки используют обратные кавычки `:
let name = "Иван";
// Обычная строка
let greeting1 = "Привет, " + name + "!";
// Шаблонная строка
let greeting2 = `Привет, ${name}!`;
console.log(greeting1); // "Привет, Иван!"
console.log(greeting2); // "Привет, Иван!"Интерполяция
Внутри ${} можно использовать любые выражения:
let a = 5;
let b = 3;
console.log(`${a} + ${b} = ${a + b}`);
// "5 + 3 = 8"
console.log(`${a} > ${b}: ${a > b}`);
// "5 > 3: true"
console.log(`Квадрат: ${a ** 2}`);
// "Квадрат: 25"Вызов функций
function getGreeting(name) {
return `Привет, ${name}!`;
}
console.log(`Сообщение: ${getGreeting("Мария")}`);
// "Сообщение: Привет, Мария!"Вызов методов
let name = "иван";
console.log(`Имя: ${name.toUpperCase()}`);
// "Имя: ИВАН"Тернарный оператор
let age = 20;
console.log(`Статус: ${age >= 18 ? "взрослый" : "ребёнок"}`);
// "Статус: взрослый"Многострочные строки
// Обычная строка — нужен \n
let text1 = "Строка 1\nСтрока 2\nСтрока 3";
// Шаблонная строка — просто переносы
let text2 = `Строка 1
Строка 2
Строка 3`;
console.log(text1);
console.log(text2);HTML-шаблоны
let user = {
name: "Иван",
age: 25,
city: "Москва"
};
let html = `
<div class="user-card">
<h2>${user.name}</h2>
<p>Возраст: ${user.age}</p>
<p>Город: ${user.city}</p>
</div>
`;
console.log(html);Вложенные шаблоны
let items = ["яблоко", "банан", "апельсин"];
let list = `
<ul>
${items.map(item => `<li>${item}</li>`).join("\n ")}
</ul>
`;
console.log(list);
// <ul>
// <li>яблоко</li>
// <li>банан</li>
// <li>апельсин</li>
// </ul>Экранирование
// Обратная кавычка внутри шаблона
console.log(`Используй \`обратные кавычки\``);
// Символ $
console.log(`Цена: \$100`);
// Или просто
console.log(`Цена: ${"$"}100`);Tagged Templates
Функция может обрабатывать шаблонную строку:
function highlight(strings, ...values) {
let result = "";
strings.forEach((str, i) => {
result += str;
if (values[i] !== undefined) {
result += `**${values[i]}**`;
}
});
return result;
}
let name = "Иван";
let age = 25;
console.log(highlight`Имя: ${name}, возраст: ${age}`);
// "Имя: **Иван**, возраст: **25**"Применение
Tagged templates используются в библиотеках: styled-components, GraphQL и других.
Практика
Задание 1: Форматирование
Задача: Создай сообщение о пользователе.
Запустите код для проверки
Loading...
Ваш вывод:
Ожидаемый результат:
Мария, 28 лет, Санкт-Петербург
Задание 2: Условный текст
Задача: Выведи приветствие в зависимости от времени суток.
Запустите код для проверки
Loading...
Ваш вывод:
Ожидаемый результат:
Добрый день
Задание 3: Генерация списка
Задача: Создай HTML-список из массива.
Запустите код для проверки
Loading...
Ваш вывод:
Ожидаемый результат:
<ul><li>Яблоко</li><li>Банан</li><li>Апельсин</li></ul>
Проверь себя
- Какой символ используется для шаблонных строк?
- Как вставить выражение в шаблонную строку?
- Как создать многострочную строку?