padding-line-between-statements
在--fix
命令行上的选项可以自动修复一些被这条规则反映的问题。
此规则要求或不允许给定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"
是case
标签。"cjs-export"
是export
CommonJS的陈述; 例如module.exports = 0
,module.exports.foo = 1
和exports.foo = 2
。这是作业的特殊情况。"cjs-import"
是import
CommonJS的陈述; 例如const foo = require("foo")
。这是变量声明的特例。"class"
是class
声明。"const"
是const
变量声明。"continue"
是continue
陈述。"debugger"
是debugger
陈述。"default"
是default
标签。"directive"
是指令序幕。这匹配指令; 例如"use strict"
。"do"
是do-while
陈述。这匹配第一个标记是do
关键字的所有语句。"empty"
是空的陈述。"export"
是export
声明。"expression"
是表达式语句。"for"
是for
循环系列。这匹配第一个标记是for
关键字的所有语句。"function"
是函数声明。"if"
是if
陈述。"import"
是import
声明。"let"
是let
变量声明。"multiline-block-like"
是像块状语句。这与block-like
类型相同,但只有块是多行的。"return"
是return
陈述。"switch"
是switch
陈述。"throw"
是throw
陈述。"try"
是try
陈述。"var"
是var
变量声明。"while"
是while
循环语句。"with"
是with
陈述。
例子
此配置在所有return
语句之前需要空行,如换行前换行符规则。
配置错误代码示例[{ blankLine: "always", prev: "*", next: "return" }]
:
/*eslint padding-line-between-statements: [
"error",
{ blankLine: "always", prev: "*", next: "return" }
]*/
function foo() {
bar();
return;
}
正确的[{ blankLine: "always", prev: "*", next: "return" }]
配置代码示例:
/*eslint padding-line-between-statements: [
"error",
{ blankLine: "always", prev: "*", next: "return" }
]*/
function foo() {
bar();
return;
}
function foo() {
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 foo() {
var a = 0;
bar();
}
function foo() {
let a = 0;
bar();
}
function foo() {
const a = 0;
bar();
}
正确的[{ 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 foo() {
var a = 0;
var b = 0;
bar();
}
function foo() {
let a = 0;
const b = 0;
bar();
}
function foo() {
const a = 0;
const 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";
foo();
正确的[{ 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();
兼容性
- JSCS: requirePaddingNewLineAfterVariableDeclaration
- JSCS: requirePaddingNewLinesAfterBlocks
- JSCS: disallowPaddingNewLinesAfterBlocks
- JSCS: requirePaddingNewLinesAfterUseStrict
- JSCS: disallowPaddingNewLinesAfterUseStrict
- JSCS: requirePaddingNewLinesBeforeExport
- JSCS: disallowPaddingNewLinesBeforeExport
- JSCS: requirePaddingNewlinesBeforeKeywords
- JSCS: disallowPaddingNewlinesBeforeKeywords
何时不使用它
如果您不想通知有关换行的警告,那么禁用此规则是安全的。
版
此规则在ESLint 4.0.0-beta.0中引入。
资源
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com