版本

點號表示法 (dot-notation)

盡可能強制使用點號表示法

🔧 可修正

此規則報告的一些問題可透過 --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 中引入的。

資源

變更語言