Как присвоить многострочную строку переменной в JavaScript?
Решение: используйте шаблонные литералы (template literals)
Начиная с ES6 (ECMAScript 2015), в JavaScript появилась удобная возможность для создания многострочных строк — шаблонные литералы (template literals). Они используют обратные кавычки (`), а не обычные двойные или одинарные кавычки.
Вот как выглядит ваш пример с использованием шаблонных литералов:
let myString = `Это первая строка
Это вторая строка
И третья строка`;
console.log(myString);
// Вывод:
// Это первая строка
// Это вторая строка
// И третья строка
Как видите, всё просто: вы просто пишете текст между обратными кавычками, и все переносы строк сохраняются в переменной.
Дополнительные возможности шаблонных литералов
Шаблонные литералы дают не только многострочность, но и другие полезные функции:
- Интерполяция выражений — можно вставлять переменные и выражения прямо в строку с помощью синтаксиса
${...}:
let name = "Иван";
let age = 30;
let greeting = `Привет, меня зовут ${name} и мне ${age} лет.`;
console.log(greeting); // "Привет, меня зовут Иван и мне 30 лет."
- Сохранение пробелов и табуляции — все отступы внутри обратных кавычек тоже сохраняются:
let codeBlock = `function hello() {
console.log("Привет, мир!");
}`;
console.log(codeBlock);
// Вывод:
// function hello() {
// console.log("Привет, мир!");
// }
Альтернативные подходы (для старых браузеров или специфических случаев)
Если вам нужно поддерживать очень старые браузеры (IE11 и ниже), или вы работаете с кодом, где нельзя использовать ES6, можно применить другие методы:
1. Конкатенация строк с символом новой строки
let myString = "Это первая строка\n" +
"Это вторая строка\n" +
"И третья строка";
console.log(myString);
// Вывод:
// Это первая строка
// Это вторая строка
// И третья строка
Здесь \n — это escape-последовательность, обозначающая символ новой строки.
2. Массив и метод join()
let myString = [
"Это первая строка",
"Это вторая строка",
"И третья строка"
].join("\n");
console.log(myString);
// Вывод:
// Это первая строка
// Это вторая строка
// И третья строка
Лучшая практика
В современном JavaScript (ES6+) всегда используйте шаблонные литералы для многострочных строк. Они читаются легче, поддерживают интерполяцию и являются стандартом. Исключение — если вам нужно поддерживать древние браузеры (IE11 и ниже), тогда используйте конкатенацию с \n.
И помните: обратный слеш в конце строки (\) — это не решение вашей задачи. Он просто позволяет продолжить строку на следующей строке в коде, но не добавляет реальный перенос строки в переменную.
Дополнение: работа с пробелами и отступами
Когда вы используете шаблонные литералы внутри функций или классов, часто возникает проблема с лишними пробелами в начале строк из-за отступов кода. Вот как это решается:
function getMessage() {
return `Это первая строка
Это вторая строка
И третья строка`; // Проблема: отступы не сохраняются
}
// Решение: используйте trim() или выравнивайте текст
function getMessageClean() {
return `Это первая строка
Это вторая строка
И третья строка`.trim();
}
Если вам нужно сохранить отступы, но они мешают читаемости кода, можно использовать следующий трюк с массивом:
function getIndentedMessage() {
return [
" Это первая строка",
" Это вторая строка",
" И третья строка"
].join("\n");
}
Также помните, что в некоторых редакторах кода (например, VS Code) можно настроить автоматическое удаление лишних пробелов при форматировании, что может повлиять на ваши многострочные строки. Будьте внимательны!
Ответов пока нет.
Войдите чтобы оставить ответ