padding-line-between-statements
要求或禁止語句之間有間隔行
此規則報告的一些問題可透過 --fix
命令列選項自動修正
此規則在 ESLint v8.53.0 中已棄用。請使用 @stylistic/eslint-plugin-js
中對應的規則。
此規則要求或禁止在給定的 2 種語句之間有空白行。適當的空白行有助於開發人員理解程式碼。
例如,下列設定要求在變數宣告和 return
語句之間有空白行。
/*eslint padding-line-between-statements: [
"error",
{ blankLine: "always", prev: "var", next: "return" }
]*/
function foo() {
var a = 1;
return a;
}
規則詳細資訊
如果未提供任何設定,此規則不會執行任何動作。
設定是一個具有 3 個屬性的物件:blankLine
、prev
和 next
。例如,{ blankLine: "always", prev: "var", next: "return" }
表示「變數宣告和 return
語句之間需要一個或多個空白行。」您可以提供任意數量的設定。如果語句對符合多個設定,則會使用最後符合的設定。
{
"padding-line-between-statements": [
"error",
{ "blankLine": LINEBREAK_TYPE, "prev": STATEMENT_TYPE, "next": STATEMENT_TYPE },
{ "blankLine": LINEBREAK_TYPE, "prev": STATEMENT_TYPE, "next": STATEMENT_TYPE },
{ "blankLine": LINEBREAK_TYPE, "prev": STATEMENT_TYPE, "next": STATEMENT_TYPE },
{ "blankLine": LINEBREAK_TYPE, "prev": STATEMENT_TYPE, "next": STATEMENT_TYPE },
...
]
}
-
LINEBREAK_TYPE
是下列其中一項。"any"
只是忽略語句對。"never"
禁止空白行。"always"
要求一個或多個空白行。請注意,它不會將存在註解的行計為空白行。
-
STATEMENT_TYPE
是下列其中一項,或下列的陣列。"*"
是萬用字元。這會比對任何語句。"block"
是孤立的程式碼區塊。"block-like"
是類區塊語句。這會比對最後一個語彙基元是區塊結束大括號的語句;例如{ }
、if (a) { }
和while (a) { }
。也比對立即呼叫的函式運算式語句。"break"
是break
語句。"case"
是switch
語句中的case
子句。"cjs-export"
是 CommonJS 的export
語句;例如module.exports = 0
、module.exports.foo = 1
和exports.foo = 2
。這是賦值的特例。"cjs-import"
是 CommonJS 的import
語句;例如const foo = require("foo")
。這是變數宣告的特例。"class"
是class
宣告。"const"
是const
變數宣告,包括單行和多行。"continue"
是continue
語句。"debugger"
是debugger
語句。"default"
是switch
語句中的default
子句。"directive"
是指示詞序言。這會比對指示詞;例如"use strict"
。"do"
是do-while
語句。這會比對第一個語彙基元是do
關鍵字的所有語句。"empty"
是空語句。"export"
是export
宣告。"expression"
是運算式語句。"for"
是for
迴圈系列。這會比對第一個語彙基元是for
關鍵字的所有語句。"function"
是函式宣告。"if"
是if
語句。"iife"
是立即呼叫的函式運算式語句。這會比對函式運算式上的呼叫,可選地加上一元運算子作為前綴。"import"
是import
宣告。"let"
是let
變數宣告,包括單行和多行。"multiline-block-like"
是類區塊語句。這與block-like
類型相同,但僅在區塊為多行時才比對。"multiline-const"
是多行const
變數宣告。"multiline-expression"
是運算式語句。這與expression
類型相同,但僅在語句為多行時才比對。"multiline-let"
是多行let
變數宣告。"multiline-var"
是多行var
變數宣告。"return"
是return
語句。"singleline-const"
是單行const
變數宣告。"singleline-let"
是單行let
變數宣告。"singleline-var"
是單行var
變數宣告。"switch"
是switch
語句。"throw"
是throw
語句。"try"
是try
語句。"var"
是var
變數宣告,包括單行和多行。"while"
是while
迴圈語句。"with"
是with
語句。
範例
此設定會要求所有 return
語句之前有空白行,類似於 newline-before-return 規則。
[{ blankLine: "always", prev: "*", next: "return" }]
設定的不正確程式碼範例
/*eslint padding-line-between-statements: [
"error",
{ blankLine: "always", prev: "*", next: "return" }
]*/
function foo() {
bar();
}
[{ blankLine: "always", prev: "*", next: "return" }]
設定的正確程式碼範例
/*eslint padding-line-between-statements: [
"error",
{ blankLine: "always", prev: "*", next: "return" }
]*/
function foo1() {
bar();
return;
}
function foo2() {
return;
}
此設定會要求每個變數宣告序列之後都有空白行,類似於 newline-after-var 規則。
[{ blankLine: "always", prev: ["const", "let", "var"], next: "*"}, { blankLine: "any", prev: ["const", "let", "var"], next: ["const", "let", "var"]}]
設定的不正確程式碼範例
/*eslint padding-line-between-statements: [
"error",
{ blankLine: "always", prev: ["const", "let", "var"], next: "*"},
{ blankLine: "any", prev: ["const", "let", "var"], next: ["const", "let", "var"]}
]*/
function foo1() {
var a = 0;
}
function foo2() {
let a = 0;
}
function foo3() {
const a = 0;
}
class C {
static {
let a = 0;
}
}
[{ blankLine: "always", prev: ["const", "let", "var"], next: "*"}, { blankLine: "any", prev: ["const", "let", "var"], next: ["const", "let", "var"]}]
設定的正確程式碼範例
/*eslint padding-line-between-statements: [
"error",
{ blankLine: "always", prev: ["const", "let", "var"], next: "*"},
{ blankLine: "any", prev: ["const", "let", "var"], next: ["const", "let", "var"]}
]*/
function foo1() {
var a = 0;
var b = 0;
bar();
}
function foo2() {
let a = 0;
const b = 0;
bar();
}
function foo3() {
const a = 0;
const b = 0;
bar();
}
class C {
static {
let a = 0;
let b = 0;
bar();
}
}
此設定會要求所有指示詞序言之後都有空白行,類似於 lines-around-directive 規則。
[{ blankLine: "always", prev: "directive", next: "*" }, { blankLine: "any", prev: "directive", next: "directive" }]
設定的不正確程式碼範例
/*eslint padding-line-between-statements: [
"error",
{ blankLine: "always", prev: "directive", next: "*" },
{ blankLine: "any", prev: "directive", next: "directive" }
]*/
"use strict";
[{ blankLine: "always", prev: "directive", next: "*" }, { blankLine: "any", prev: "directive", next: "directive" }]
設定的正確程式碼範例
/*eslint padding-line-between-statements: [
"error",
{ blankLine: "always", prev: "directive", next: "*" },
{ blankLine: "any", prev: "directive", next: "directive" }
]*/
"use strict";
"use asm";
foo();
此設定會要求 switch
語句中的子句之間有空白行。
[{ blankLine: "always", prev: ["case", "default"], next: "*" }]
設定的不正確程式碼範例
/*eslint padding-line-between-statements: [
"error",
{ blankLine: "always", prev: ["case", "default"], next: "*" }
]*/
switch (foo) {
case 1:
bar();
break;
}
[{ blankLine: "always", prev: ["case", "default"], next: "*" }]
設定的正確程式碼範例
/*eslint padding-line-between-statements: [
"error",
{ blankLine: "always", prev: ["case", "default"], next: "*" }
]*/
switch (foo) {
case 1:
bar();
break;
case 2:
case 3:
baz();
break;
default:
quux();
}
何時不使用它
如果您不想收到有關換行符號的警告,則可以安全地停用此規則。
相容性
- JSCS: requirePaddingNewLineAfterVariableDeclaration
- JSCS: requirePaddingNewLinesAfterBlocks
- JSCS: disallowPaddingNewLinesAfterBlocks
- JSCS: requirePaddingNewLinesAfterUseStrict
- JSCS: disallowPaddingNewLinesAfterUseStrict
- JSCS: requirePaddingNewLinesBeforeExport
- JSCS: disallowPaddingNewLinesBeforeExport
- JSCS: requirePaddingNewlinesBeforeKeywords
- JSCS: disallowPaddingNewlinesBeforeKeywords
版本
此規則是在 ESLint v4.0.0-beta.0 中引入的。