點號表示法 (dot-notation)
盡可能強制使用點號表示法
🔧 可修正
此規則報告的一些問題可透過 --fix
命令列選項自動修正
在 JavaScript 中,可以使用點號表示法 (foo.bar
) 或方括號表示法 (foo["bar"]
) 來存取屬性。然而,點號表示法通常更受偏好,因為它更容易閱讀、較不冗長,並且更適合積極的 JavaScript 縮減器。
foo["bar"];
規則詳情
此規則旨在維護程式碼一致性,並透過盡可能鼓勵使用點號表示法來提高程式碼可讀性。因此,當它遇到不必要的方括號表示法時,將會發出警告。
此規則的不正確程式碼範例
在遊樂場開啟
/*eslint dot-notation: "error"*/
var x = foo[];
此規則的正確程式碼範例
在遊樂場開啟
/*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[] = 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 中引入的。