SyntaxError: unterminated string literal(незавершённый строковый литерал)
Сообщение
SyntaxError: незадействованная строковая константа (Edge) SyntaxError: незадействованный строковый литерал (Firefox)
Тип ошибки
Что пошло не так?
Где-то есть unterminated String
. Строковые литералы должны быть заключены в одинарные (')
или двойные (")
кавычки. JavaScript не делает различий между строками в одинарных и двойных кавычках. Escape-последовательности работают в строках, созданных с одинарными или двойными кавычками. Чтобы исправить эту ошибку, проверьте:
- у вас есть открывающие и закрывающие кавычки (одинарные или двойные) для строкового литерала,
- вы правильно экранировали строковый литерал,
- строковый литерал не разбивается на несколько строк.
Примеры
Несколько строк
Вы не можете разделить строку на несколько строк, как в JavaScript:
js
var longString = 'Это очень длинная строка, которая нуждается
перенос через несколько строк, потому что
в противном случае мой код нечитаем.";
// SyntaxError: незавершённый строковый литерал
Вместо этого используйте оператор+, обратную косую черту или литералы шаблона. Вариант оператора + выглядит следующим образом:
js
var longString = ' Это очень длинная строка, которая нуждается в ' +
'чтобы обернуть через несколько строк, потому что' +
-иначе мой код будет нечитабелен.";
Или можно использовать символ обратной косой черты ("\") в конце каждой строки, чтобы указать, что строка будет продолжаться в следующей строке. Убедитесь, что после обратной косой черты нет пробелов или других символов (кроме разрыва строки) или отступа; в противном случае это не сработает. Эта форма выглядит следующим образом:
js
var longString = 'Это очень длинная строка, которая нуждается \
переносе через несколько строк, потому что \
в противном случае мой код нечитаем.";
Ещё одна возможность-использовать шаблонные литералы, поддерживаемые в средах ECMAScript 2015:
js
var longString = `Это очень длинная строка, которая нуждается
в переносе через несколько строк, потому что
в противном случае мой код нечитаем.`;
Смотрите также
String
- Template literals(шаблонные литералы)