no-nonoctal-decimal-escape
Disallow \8
and \9
escape sequences in string literals
✅ Recommended
The "extends": "eslint:recommended"
property in a configuration file enables this rule
💡 hasSuggestions
Some problems reported by this rule are manually fixable by editor suggestions
虽然直到 ECMAScript 2021 才在语言中明确规定,但大多数 JavaScript 引擎允许在字符串字面中使用 8
和 9
转义序列,并将其视为“无用”转义:
"\8" === "8"; // true
"\9" === "9"; // true
从 ECMAScript 2021 开始,这些转义序列被指定为非八进制十进制转义序列,保留了相同的行为。
尽管如此,ECMAScript 规范将字符串字面中的 \8
和 \9
作为一种遗留特性。如果 ECMAScript 的主机不是 Web 浏览器,这种语法是很有必要的。浏览器仍然必须支持它,但只能在非严格模式下支持。
无论你的目标环境如何,在编写新的代码时都不应该使用这些转义序列。
规则细节
这条规则不允许在字符串字面中使用 \8
和 \9
转义序列。
使用此规则的错误示例:
Open in Playground
/*eslint no-nonoctal-decimal-escape: "error"*/
"\8";
"\9";
var foo = "w\8less";
var bar = "December 1\9";
var baz = "Don't use \8 and \9 escapes.";
var quux = "\0\8";
使用此规则的正确示例:
Open in Playground
/*eslint no-nonoctal-decimal-escape: "error"*/
"8";
"9";
var foo = "w8less";
var bar = "December 19";
var baz = "Don't use \\8 and \\9 escapes.";
var quux = "\0\u0038";
Related Rules
Version
This rule was introduced in ESLint v7.14.0.