Верх страницы
Обложка к записи Многострочные переменные в JavaScript
Время для прочтения: 0 мин. 20 сек.

Многострочные переменные в JavaScript

В многих языках программирования есть heredoc-синтаксис для создания многострочных переменных, содержащих как одинарные кавычки, так и двойные. В JavaScript же явного определения heredoc нет. Как же быть?

Попробуем решить данный вопрос.

Как обстоят дела, например, в РНР?

Обычное определение строки в РНР

$s = 'Кавычки бывают \'одинарными\'';
$t = "Кавычки бывают \"двойными\"";

heredoc-определение в PHP

$s = <<<EOL
  Кавычки бывают 'одинарными' и "двойными".
  Да еще и в несколько строк.
EOL;

Что есть в JavaScript?

Обычно мы используем конкатенацию строк

var multiline = 'Первая строка'+
'Вторая строка'+
'Третья строка';

Второй вариант — экранирование переводов строк

var multiline = 'Первая строка\
Вторая строка\
Третья строка';

У данного метода наблюдаются проблемы с браузером Internet Explorer

Третий вариант — CDATA

var multiline = ""+<r><![CDATA[
Первая строка
Вторая строка
Третья строка
]]></r>;

У данного метода наблюдаются проблемы с браузером Internet Explorer, Google Chrome

Можно попробовать и так

var multiline = <>
Первая строка
Вторая строка
Третья строка
</>.toString();

Шаблонные литералы

Спецификация ES6 принесла нам возможность вставки многострочных переменных при помощи шаблонных литералов.

console.log(`string text line 1
string text line 2`);

Как видите, вариантов несколько, какой из них выбрать дело ваше, но кроссбраузерный лишь первый из них (конкатенация строк).

RTFM

Автор: Кобзарёв Михаил

Русский разработчик со стажем. Работаю с PHP, ООП, JavaScript, Git, WordPress, Joomla, Drupal, Opencart, Laravel, Moonshine.

Оптимизирую сайты под Google Page Speed, настраиваю импорты для больших магазинов на WooCommerce + WP All Import. Пишу плагины на заказ. Все мои услуги.

Веду блог о разработке, дайджест в телеграмме и в ВК.

Вы всегда можете нанять меня.

Комментарии
Подписаться
Уведомить о
guest

4 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
Андрей
Андрей
3 лет назад

Ни «var multiline = «»+<r><![CDATA[«, ни «var multiline = <>» не работают в javascript. Откуда вы это вообще взяли?

Алекс
Алекс
1 год назад

В 2020 году в новой версии ES6 появились многострочные литералы позволяющие использовать несколько строк внутри переменной. Для этого нужно применять гравис или машинописный обратный апостроф (это ` на русской клавиатуре на букве Ё).

Предыдущая запись
Следующая запись

Давайте дружить
в Телеграме

Авторский блог вашего покорного слуги в Telegram про web, программирование, алгоритмы, инструменты разработчика, WordPress, Joomla, Opencart, Laravel, Moonshine, фильмы и сериалы