space-before-blocks
強制區塊前的間距一致
此規則回報的部分問題可透過 --fix
命令列選項自動修正
此規則已在 ESLint v8.53.0 中棄用。請使用 @stylistic/eslint-plugin-js
中對應的規則。
一致性是任何風格指南的重要部分。雖然將區塊的開頭大括號放在哪裡是個人偏好,但整個專案中應該保持一致。風格不一致會分散讀者注意力,無法看到程式碼的重要部分。
規則詳情
此規則將強制執行區塊前間距的一致性。它僅適用於不在新行上開始的區塊。
- 此規則會忽略
=>
和區塊之間的間距。間距由arrow-spacing
規則處理。 - 此規則會忽略關鍵字和區塊之間的間距。間距由
keyword-spacing
規則處理。 - 此規則會忽略 switch case 的
:
和區塊之間的間距。間距由switch-colon-spacing
規則處理。
選項
此規則接受一個參數。如果參數是 "always"
,則區塊必須始終至少有一個前導空格。如果參數是 "never"
,則所有區塊都不應有任何前導空格。如果希望函式區塊、關鍵字區塊和類別有不同的間距,則可以將一個可選的設定物件作為規則參數傳遞,以分別設定這些情況。如果設定物件中的任何值是 "off"
,則不會對該類型的區塊強制執行任何樣式。
(例如 { "functions": "never", "keywords": "always", "classes": "always" }
)
預設值是 "always"
。
“always”
使用 “always” 選項時,此規則的不正確程式碼範例
/*eslint space-before-blocks: "error"*/
if (a)
function a()
for (;;)
try {} catch(a)
class Foo
使用 "always"
選項時,此規則的正確程式碼範例
/*eslint space-before-blocks: "error"*/
if (a) {
b();
}
if (a) {
b();
} else{ /*no error. this is checked by `keyword-spacing` rule.*/
c();
}
class C {
static{} /*no error. this is checked by `keyword-spacing` rule.*/
}
function a() {}
for (;;) {
b();
}
try {} catch(a) {}
“never”
使用 "never"
選項時,此規則的不正確程式碼範例
/*eslint space-before-blocks: ["error", "never"]*/
if (a)
function a()
for (;;)
try {} catch(a)
使用 "never"
選項時,此規則的正確程式碼範例
/*eslint space-before-blocks: ["error", "never"]*/
if (a){
b();
}
function a(){}
for (;;){
b();
}
try{} catch(a){}
class Foo{
constructor(){}
}
當設定為 { "functions": "never", "keywords": "always", "classes": "never" }
時,此規則的不正確程式碼範例
/*eslint space-before-blocks: ["error", { "functions": "never", "keywords": "always", "classes": "never" }]*/
function a()
try {} catch(a)
class Foo{
constructor()
}
當設定為 { "functions": "never", "keywords": "always", "classes": "never" }
時,此規則的正確程式碼範例
/*eslint space-before-blocks: ["error", { "functions": "never", "keywords": "always", "classes": "never" }]*/
for (;;) {
// ...
}
describe(function(){
// ...
});
class Foo{
constructor(){}
}
當設定為 { "functions": "always", "keywords": "never", "classes": "never" }
時,此規則的不正確程式碼範例
/*eslint space-before-blocks: ["error", { "functions": "always", "keywords": "never", "classes": "never" }]*/
function a()
try {} catch(a)
class Foo
當設定為 { "functions": "always", "keywords": "never", "classes": "never" }
時,此規則的正確程式碼範例
/*eslint space-before-blocks: ["error", { "functions": "always", "keywords": "never", "classes": "never" }]*/
if (a){
b();
}
var a = function() {}
class Foo{
constructor() {}
}
當設定為 { "functions": "never", "keywords": "never", "classes": "always" }
時,此規則的不正確程式碼範例
/*eslint space-before-blocks: ["error", { "functions": "never", "keywords": "never", "classes": "always" }]*/
class Foo
當設定為 { "functions": "never", "keywords": "never", "classes": "always" }
時,此規則的正確程式碼範例
/*eslint space-before-blocks: ["error", { "functions": "never", "keywords": "never", "classes": "always" }]*/
class Foo {
constructor(){}
}
何時不應使用
如果您不關心區塊前間距的一致性,則可以關閉此規則。
相關規則
版本
此規則在 ESLint v0.9.0 中引入。