Время для прочтения: 1 мин. 7 сек.

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

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

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

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

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


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

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


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

Что есть в JavaScript?

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


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

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


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

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

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


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

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

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


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

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

RTFM

Для вставки кода используйте HTML-теги
<pre><code class="php">ваш код</code></pre>