Spec-Zone.ru › ESLint

space-before-function-paren

Требует единообразного пробела перед открывающей скобкой определения function

🔧 Можно исправить автоматически

Некоторые проблемы, о которых сообщает это правило, могут быть автоматически исправлены параметром командной строки --fix

Важно

Это правило было объявлено устаревшим в ESLint v8.53.0. Оно будет удалено в v11.0.0. Используйте соответствующее правило из @stylistic/eslint-plugin.

Подробнее

При форматировании функции между именем функции или ключевым словом 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 запрещает любой пробел перед ( аргументов.

Для обеспечения обратной совместимости строковый параметр не проверяет выражения асинхронных стрелочных функций.

Также можно задать отдельный параметр для каждого типа функций. Для каждого из следующих параметров можно указать значение "always", "never" или "ignore". Значение по умолчанию — "always".

  • anonymous предназначен для выражений анонимных функций (например, function () {}).
  • named предназначен для выражений именованных функций (например, function foo () {}).
  • asyncArrow предназначен для выражений асинхронных стрелочных функций (например, async () => {}).

«always»

Примеры неправильного кода для этого правила с параметром "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»

Примеры неправильного кода для этого правила с параметром "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