diff --git a/files/ru/web/javascript/reference/errors/unterminated_string_literal/index.md b/files/ru/web/javascript/reference/errors/unterminated_string_literal/index.md index 31c53f3e33571e..31435b6b1573cb 100644 --- a/files/ru/web/javascript/reference/errors/unterminated_string_literal/index.md +++ b/files/ru/web/javascript/reference/errors/unterminated_string_literal/index.md @@ -1,15 +1,19 @@ --- -title: "SyntaxError: unterminated string literal(незавершённый строковый литерал)" +title: "SyntaxError: unterminated string literal" slug: Web/JavaScript/Reference/Errors/Unterminated_string_literal +l10n: + sourceCommit: d71b141d2d18b96639547856714df19cefacfebf --- {{jsSidebar("Errors")}} +Ошибка JavaScript «незавершённый строковый литерал» возникает, когда где-то встречается незавершённый [строковый литерал](/ru/docs/Web/JavaScript/Guide/Grammar_and_types#строковый_литерал). Строковые литералы должны быть заключены в одинарные (`'`) или двойные (`"`)) кавычки. + ## Сообщение -``` -SyntaxError: незадействованная строковая константа (Edge) -SyntaxError: незадействованный строковый литерал (Firefox) +```plain +SyntaxError: Unterminated string constant (Edge) +SyntaxError: unterminated string literal (Firefox) ``` ## Тип ошибки @@ -18,9 +22,11 @@ SyntaxError: незадействованный строковый литера ## Что пошло не так? -Где-то есть unterminated {{jsxref("String")}}. Строковые литералы должны быть заключены в одинарные `(')` или двойные `(")` кавычки. JavaScript не делает различий между строками в одинарных и двойных кавычках. Escape-последовательности работают в строках, созданных с одинарными или двойными кавычками. Чтобы исправить эту ошибку, проверьте: +Где-то есть незавершённый [строковый литерал](/ru/docs/Web/JavaScript/Guide/Grammar_and_types#строковый_литерал). Строковые литералы должны быть заключены в одинарные (`'`) или двойные (`"`) кавычки. JavaScript не делает различий между строками в одинарных и двойных кавычках. [Экранирование символов](/ru/docs/Web/JavaScript/Reference/Lexical_grammar) работают в строках, созданных и с одинарными и с двойными кавычками. -- у вас есть открывающие и закрывающие кавычки (одинарные или двойные) для строкового литерала, +Чтобы исправить эту ошибку, проверьте: + +- у вас есть открывающая и закрывающая кавычки (обе одинарные или обе двойные) для строкового литерала, - вы правильно экранировали строковый литерал, - строковый литерал не разбивается на несколько строк. @@ -30,38 +36,42 @@ SyntaxError: незадействованный строковый литера Вы не можете разделить строку на несколько строк, как в JavaScript: -```js example-bad -var longString = 'Это очень длинная строка, которая нуждается - перенос через несколько строк, потому что - в противном случае мой код нечитаем."; -// SyntaxError: незавершённый строковый литерал +```js-nolint example-bad +var longString = "Это очень длинная строка, которую + необходимо разбивать на несколько строк, + потому что иначе её трудно читать."; +// SyntaxError: unterminated string literal ``` -Вместо этого используйте оператор+, обратную косую черту или литералы шаблона. Вариант оператора + выглядит следующим образом: +Вместо этого используйте [оператор +](/ru/docs/Web/JavaScript/Reference/Operators/Addition), обратную косую черту или [шаблонные строки](/ru/docs/Web/JavaScript/Reference/Template_literals). + +Вариант с оператором `+` выглядит следующим образом: ```js example-good -var longString = ' Это очень длинная строка, которая нуждается в ' + - 'чтобы обернуть через несколько строк, потому что' + - -иначе мой код будет нечитабелен."; +const longString = + "Это очень длинная строка, которую " + + "необходимо разбивать на несколько строк, " + + "потому что иначе её трудно читать."; ``` -Или можно использовать символ обратной косой черты ("\\") в конце каждой строки, чтобы указать, что строка будет продолжаться в следующей строке. Убедитесь, что после обратной косой черты нет пробелов или других символов (кроме разрыва строки) или отступа; в противном случае это не сработает. Эта форма выглядит следующим образом: +Или можно использовать символ обратной косой черты ("\\") в конце каждой строки, чтобы указать, что текст будет продолжаться на следующей строке. Убедитесь, что после обратной косой черты нет пробелов или других символов (кроме разрыва строки) или отступа, иначе это не сработает. Такой подход выглядит следующим образом: ```js example-good -var longString = 'Это очень длинная строка, которая нуждается \ - переносе через несколько строк, потому что \ - в противном случае мой код нечитаем."; +const longString = + "Это очень длинная строка, которую \ +необходимо разбивать на несколько строк, \ +потому что иначе её трудно читать."; ``` -Ещё одна возможность-использовать шаблонные литералы, поддерживаемые в средах ECMAScript 2015: +Ещё одна возможность — использовать [шаблонные строки](/ru/docs/Web/JavaScript/Reference/Template_literals): ```js example-good -var longString = `Это очень длинная строка, которая нуждается - в переносе через несколько строк, потому что - в противном случае мой код нечитаем.`; +const longString = `Это очень длинная строка, которую +необходимо разбивать на несколько строк, +потому что иначе её трудно читать.`; ``` ## Смотрите также -- {{jsxref("String")}} -- [Template literals](/ru/docs/Web/JavaScript/Reference/Template_literals)(шаблонные литералы) +- [Строковый литерал](/ru/docs/Web/JavaScript/Guide/Grammar_and_types#строковый_литерал) +- [Шаблонные строки](/ru/docs/Web/JavaScript/Reference/Template_literals)