пробел-перед-скобками-функции
Принудительно задаёт согласованное расстояние перед открывающей скобкой function определения функции.
Некоторые проблемы, обнаруженные этим правилом, автоматически исправляются с помощью параметра --fix командной строки
Это правило было устаревшим в ESLint v8.53.0. Используйте соответствующее правило в @stylistic/eslint-plugin-js.
При форматировании функции допускается пробел между именем функции или function ключевым словом и открывающей скобкой. Для именованных функций также требуется пробел между ключевым словом function и именем функции, но для безымянных функций пробел не требуется. Например:
function withoutSpace(x) {
// ...
}
function withSpace (x) {
// ...
}
var anonymousWithoutSpace = function() {};
var anonymousWithSpace = function () {};
Стилистические руководства могут требовать пробела после ключевого слова function для безымянных функций, в то время как другие не требуют пробела. Аналогично, пробел после имени функции может быть обязательным или необязательным.
Подробное описание правила
Это правило предназначено для принудительного соблюдения согласованного пробела перед скобками функций и, таким образом, будет выдавать предупреждение всякий раз, когда пробелы не соответствуют заданным предпочтениям.
Параметры
Это правило имеет параметр типа строка или объект:
{
"space-before-function-paren": ["error", "always"],
// or
"space-before-function-paren": ["error", {
"anonymous": "always",
"named": "always",
"asyncArrow": "always"
}],
}
-
always(по умолчанию) требует пробел перед(аргументов. -
neverзапрещает любой пробел перед(аргументов.
Параметр типа строка не проверяет выражения стрелочных функций async для обеспечения обратной совместимости.
Вы также можете использовать отдельный параметр для каждого типа функции. Каждый из следующих параметров может быть установлен на "always", "never", или "ignore". По умолчанию значение "always".
-
anonymousотносится к выражениям безымянных функций (например,function () {}). -
namedотносится к выражениям именованных функций (например,function foo () {}). -
asyncArrowотносится к выражениям стрелочных функций async (например,async () => {}).
“всегда”
Примеры некорректного кода для этого правила с параметром "always" по умолчанию:
/*eslint space-before-function-paren: "error"*/
function foo) {
// ...
}
var bar = function) {
// ...
};
var bar = function foo) {
// ...
};
class Foo {
constructor) {
// ...
}
}
var baz = {
bar) {
// ...
}
};
var baz = async) => 1
Примеры корректного кода для этого правила с параметром "always" по умолчанию:
/*eslint space-before-function-paren: "error"*/
function foo () {
// ...
}
var bar = function () {
// ...
};
var bar = function foo () {
// ...
};
class Foo {
constructor () {
// ...
}
}
var baz = {
bar () {
// ...
}
};
var baz = async () => 1
“никогда”
Примеры некорректного кода для этого правила с параметром "never":
/*eslint space-before-function-paren: ["error", "never"]*/
function foo() {
// ...
}
var bar = function() {
// ...
};
var bar = function foo() {
// ...
};
class Foo {
constructor() {
// ...
}
}
var baz = {
bar() {
// ...
}
};
var baz = async() => 1
Примеры корректного кода для этого правила с параметром "never":
/*eslint space-before-function-paren: ["error", "never"]*/
function foo() {
// ...
}
var bar = function() {
// ...
};
var bar = function foo() {
// ...
};
class Foo {
constructor() {
// ...
}
}
var baz = {
bar() {
// ...
}
};
var baz = async() => 1
{"anonymous": "always", "named": "never", "asyncArrow": "always"}
Примеры некорректного кода для этого правила с параметром {"anonymous": "always", "named": "never", "asyncArrow": "always"}:
/*eslint space-before-function-paren: ["error", {"anonymous": "always", "named": "never", "asyncArrow": "always"}]*/
function foo() {
// ...
}
var bar = function) {
// ...
};
class Foo {
constructor() {
// ...
}
}
var baz = {
bar() {
// ...
}
};
var baz = asynca) => await a
Примеры корректного кода для этого правила с параметром {"anonymous": "always", "named": "never", "asyncArrow": "always"}:
/*eslint space-before-function-paren: ["error", {"anonymous": "always", "named": "never", "asyncArrow": "always"}]*/
function foo() {
// ...
}
var bar = function () {
// ...
};
class Foo {
constructor() {
// ...
}
}
var baz = {
bar() {
// ...
}
};
var baz = async (a) => await a
{"anonymous": "never", "named": "always"}
Примеры некорректного кода для этого правила с параметром {"anonymous": "never", "named": "always"}:
/*eslint space-before-function-paren: ["error", { "anonymous": "never", "named": "always" }]*/
function foo) {
// ...
}
var bar = function() {
// ...
};
class Foo {
constructor) {
// ...
}
}
var baz = {
bar) {
// ...
}
};
Примеры корректного кода для этого правила с параметром {"anonymous": "never", "named": "always"}:
/*eslint space-before-function-paren: ["error", { "anonymous": "never", "named": "always" }]*/
function foo () {
// ...
}
var bar = function() {
// ...
};
class Foo {
constructor () {
// ...
}
}
var baz = {
bar () {
// ...
}
};
{"anonymous": "ignore", "named": "always"}
Примеры некорректного кода для этого правила с параметром {"anonymous": "ignore", "named": "always"}:
/*eslint space-before-function-paren: ["error", { "anonymous": "ignore", "named": "always" }]*/
function foo) {
// ...
}
class Foo {
constructor) {
// ...
}
}
var baz = {
bar) {
// ...
}
};
Примеры корректного кода для этого правила с параметром {"anonymous": "ignore", "named": "always"}:
/*eslint space-before-function-paren: ["error", { "anonymous": "ignore", "named": "always" }]*/
var bar = function() {
// ...
};
var bar = function () {
// ...
};
function foo () {
// ...
}
class Foo {
constructor () {
// ...
}
}
var baz = {
bar () {
// ...
}
};
Когда не использовать
Вы можете отключить это правило, если вас не интересует согласованность пробелов перед скобками функций.
Связанные правила
Версия
Это правило было добавлено в ESLint v0.18.0.
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/space-before-function-paren