Многострочные переменные в 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`);
Как видите, вариантов несколько, какой из них выбрать дело ваше, но кроссбраузерный лишь первый из них (конкатенация строк).
Ни «var multiline = «»+<r><![CDATA[«, ни «var multiline = <>» не работают в javascript. Откуда вы это вообще взяли?
Статье почти 10 лет. На момент ее написания все указанные способы работали с оговорками, которые указаны под каждым из них.
В 2020 году в новой версии ES6 появились многострочные литералы позволяющие использовать несколько строк внутри переменной. Для этого нужно применять гравис или машинописный обратный апостроф (это ` на русской клавиатуре на букве Ё).
Да, ES6 — это очень крутая тема, jQuery более не нужен) Добавил обновление в пост.