Вопрос старый, но я хочу дать четкий ответ и объяснить, почему это происходит для тех, кто приходит сюда:
Прежде всего, нет ничего плохого в строке кода JavaScript в вопросе. Он абсолютно действителен и не вызывает ошибок синтаксического анализа. Причина проблемы в случае с Виталмаксом, скорее всего, заключалась в том, что он не опубликовал дополнительный код, который окружал эту строку.
Вот пример в PHP, который показывает, почему анализатор JS жалуется на синтаксис:
<?php
echo "alert('Hello again! This is how we\nadd line breaks to an alert box!');";
?>
Тогда анализируемый вывод на стороне сервера (это то, что получает браузер):
alert("Hello again! This is how we
add line breaks to an alert box!");
В JavaScript строки не должны иметь реальные разрывы строк. Вместо этого они всегда должны быть экранированы (например: \ n), поэтому браузер жалуется на «неопределенный строковый литерал» в реальном разрыве строки. Есть некоторые исключения из этого правила, например, для горизонтальных табуляторов (\ t). Таким образом (в этом случае) вы должны избегать разрывов строки дважды с помощью \\ n. Поэтому, когда PHP анализирует и преобразует его из \\ n в \ n, JavaScript может преобразовать его из \ n в [настоящий разрыв строки] .
Правильный пример PHP будет:
<?php
echo "alert('Hello again! This is how we\\nadd line breaks to an alert box!');";
?>
Или:
<?php
echo 'alert("Hello again! This is how we\nadd line breaks to an alert box!");';
?>
Во втором случае вам не нужно дважды экранировать его, потому что экранированные символы в строках PHP с одинарными кавычками не декодируются (\ n остается \ n).