SyntaxError: восьмеричные последовательности экранирования нельзя использовать в неразмеченных шаблонных литералах или в коде строгого режима
Исключение JavaScript "восьмеричные последовательности экранирования нельзя использовать в неразмеченных шаблонных литералах или в коде строгого режима" возникает, когда восьмеричные последовательности экранирования используются в строковых литералах строгого режима или неразмеченных шаблонных литералах.
Сообщение
SyntaxError: Octal escape sequences are not allowed in strict mode. (V8-based) SyntaxError: \8 and \9 are not allowed in strict mode. (V8-based) SyntaxError: Octal escape sequences are not allowed in template strings. (V8-based) SyntaxError: \8 and \9 are not allowed in template strings. (V8-based) SyntaxError: octal escape sequences can't be used in untagged template literals or in strict mode code (Firefox) SyntaxError: the escapes \8 and \9 can't be used in untagged template literals or in strict mode code (Firefox) SyntaxError: The only valid numeric escape in strict mode is '\0' (Safari)
Тип ошибки
Что пошло не так?
Последовательность экранирования строки в виде \, за которой следует любое количество цифр, кроме одной 0, устарела. Если вы хотите представить символ по значению его кодовой точки, вместо этого следует использовать последовательность экранирования \x или \u, например \x01 или \u0001 вместо \1.
Неразмеченные шаблонные литералы никогда не могут содержать восьмеричные последовательности экранирования, ни в строгом режиме, ни в обычном. Однако *размеченные* шаблонные литералы могут содержать любую форму последовательности экранирования и приведут к тому, что массив шаблонов, полученный тегирующей функцией, будет содержать undefined.
Примеры
Восьмеричные последовательности экранирования
"use strict"; "\251"; // SyntaxError: octal escape sequences can't be used in untagged template literals or in strict mode code
Допустимые восьмеричные числа
Для восьмеричных последовательностей экранирования вы можете использовать вместо них шестнадцатеричные последовательности экранирования:
"\xA9";
Если вы хотите представить некоторый исходный текст буквально, не интерпретируя никакие последовательности экранирования, используйте String.raw:
String.raw`\251`; // A string containing four characters
См. также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Deprecated_octal_escape_sequence