Spec-Zone.ru › ESLint

пробел-перед-скобками-функции

Принудительно задаёт согласованное расстояние перед открывающей скобкой 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" по умолчанию:

Открыть в Playground
/*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" по умолчанию:

Открыть в Playground
/*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":

Открыть в Playground
/*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":

Открыть в Playground
/*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"}:

Открыть в Playground
/*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": "always", "named": "never", "asyncArrow": "always"}:

Открыть в Playground
/*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"}:

Открыть в Playground
/*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"}:

Открыть в Playground
/*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"}:

Открыть в Playground
/*eslint space-before-function-paren: ["error", { "anonymous": "ignore", "named": "always" }]*/

function foo() {
    // ...
}

class Foo {
    constructor() {
        // ...
    }
}

var baz = {
    bar() {
        // ...
    }
};

Примеры корректного кода для этого правила с параметром {"anonymous": "ignore", "named": "always"}:

Открыть в Playground
/*eslint space-before-function-paren: ["error", { "anonymous": "ignore", "named": "always" }]*/

var bar = function() {
    // ...
};

var bar = function () {
    // ...
};

function foo () {
    // ...
}

class Foo {
    constructor () {
        // ...
    }
}

var baz = {
    bar () {
        // ...
    }
};

Когда не использовать

Вы можете отключить это правило, если вас не интересует согласованность пробелов перед скобками функций.

Связанные правила

  • keyword-spacing

Версия

Это правило было добавлено в ESLint v0.18.0.

Ресурсы

  • Исходный код правила
  • Исходный код тестов

© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/space-before-function-paren

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API