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