版本

点号表示法

尽可能强制使用点号表示法

🔧 可修复

此规则报告的一些问题可以通过--fix 命令行选项自动修复。

在 JavaScript 中,可以使用点号表示法 (foo.bar) 或方括号表示法 (foo["bar"]) 来访问属性。但是,点号表示法通常更受欢迎,因为它更易于阅读、更简洁,并且与积极的 JavaScript 最小化程序配合得更好。

foo["bar"];

规则详情

此规则旨在通过鼓励尽可能使用点号表示法样式来维护代码一致性和提高代码可读性。因此,当它遇到不必要的方括号表示法时会发出警告。

此规则的不正确代码示例

在游乐场中打开
/*eslint dot-notation: "error"*/

var x = foo["bar"];

此规则的正确代码示例

在游乐场中打开
/*eslint dot-notation: "error"*/

var x = foo.bar;

var x = foo[bar];    // Property name is a variable, square-bracket notation required

选项

此规则接受单个选项参数。

  • allowKeywords选项设置为false(默认值为true)以遵循与 ECMAScript 版本 3 兼容的样式,避免对保留字属性使用点号表示法。
  • allowPattern选项设置为正则表达式字符串,以允许属性名称与模式匹配的方括号表示法(默认情况下,不测试任何模式)。

allowKeywords

{ "allowKeywords": false }选项的正确代码示例

在游乐场中打开
/*eslint dot-notation: ["error", { "allowKeywords": false }]*/

var foo = { "class": "CS 101" }
var x = foo["class"]; // Property name is a reserved word, square-bracket notation required

{ "allowKeywords": false }选项的其他正确代码示例

在游乐场中打开
/*eslint dot-notation: ["error", { "allowKeywords": false }]*/

class C {
    #in;
    foo() {
        this.#in; // Dot notation is required for private identifiers
    }
}

allowPattern

例如,在准备要发送到外部 API 的数据时,通常需要使用包含下划线的属性名称。如果camelcase规则生效,则不允许使用这些蛇形命名法属性。通过为dot-notation规则提供allowPattern,可以使用方括号表示法访问这些蛇形命名法属性。

{ "allowPattern": "^[a-z]+(_[a-z]+)+$" }(查找蛇形命名法属性的模式)示例选项的不正确代码示例

在游乐场中打开
/*eslint dot-notation: ["error", { "allowPattern": "^[a-z]+(_[a-z]+)+$" }]*/

var data = {};
data["fooBar"] = 42;

{ "allowPattern": "^[a-z]+(_[a-z]+)+$" }(查找蛇形命名法属性的模式)示例选项的正确代码示例

在游乐场中打开
/*eslint dot-notation: ["error", { "allowPattern": "^[a-z]+(_[a-z]+)+$" }]*/

var data = {};
data["foo_bar"] = 42;

版本

此规则在 ESLint v0.0.7 中引入。

资源

更改语言