Versions

space-before-function-parentheses

在函数定义中打开小括号之前执行一致的间距。

(已移除)此规则在 ESLint v1.0 中移除并被 space-before-function-paren 规则。该规则的名称从“parentheses”改为“paren”,以便与其他所取代的名称一致。

当格式化一个函数时,在函数名或 function 关键字和开头的 paren 之间允许有空格。命名的函数也需要在 function 关键字和函数名之间有一个空格,但匿名函数不需要空格。比如:

function withoutSpace(x) {
    // ...
}

function withSpace (x) {
    // ...
}

var anonymousWithoutSpace = function() {};

var anonymousWithSpace = function () {};

风格指南可能要求匿名函数在 function 关键字后有一个空格,而其他的则规定没有空格。同样地,函数名称后面的空格可能需要也可能不需要。

规则细节

这条规则的目的是在函数括号前强制执行一致的间距,因此,只要空白处不符合指定的偏好,就会发出警告。

这条规则需要一个参数。如果它是 "always",即默认的选项,所有命名函数和匿名函数的括号前必须有空格。如果是 "never",那么所有命名的函数和匿名函数的括号前都不能有空格。如果你希望命名函数和匿名函数有不同的间距,你可以传递一个配置对象作为规则参数来单独配置(如 {"anonymous": "always", "named": "never"})。

使用此规则与默认的 "always" 选项的错误示例:

Open in Playground
/*eslint-env es6*/

function foo() {
    // ...
}

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

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

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

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

使用此规则与默认的 "always" 选项的正确示例:

Open in Playground
/*eslint-env es6*/

function foo () {
    // ...
}

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

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

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

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

使用此规则与 "never" 选项的错误示例:

Open in Playground
/*eslint-env es6*/

function foo () {
    // ...
}

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

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

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

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

使用此规则与 "never" 选项的正确示例:

Open in Playground
/*eslint-env es6*/

function foo() {
    // ...
}

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

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

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

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

使用此规则与 {"anonymous": "always", "named": "never"} 选项的错误示例:

Open in Playground
/*eslint-env es6*/

function foo () {
    // ...
}

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

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

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

使用此规则与 {"anonymous": "always", "named": "never"} 选项的正确示例:

Open in Playground
/*eslint-env es6*/

function foo() {
    // ...
}

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

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

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

使用此规则与 {"anonymous": "never", "named": "always"} 选项的错误示例:

Open in Playground
/*eslint-env es6*/

function foo() {
    // ...
}

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

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

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

使用此规则与 {"anonymous": "never", "named": "always"} 选项的正确示例:

Open in Playground
/*eslint-env es6*/

function foo () {
    // ...
}

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

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

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

何时不用

如果你不关心函数括号前间距的一致性,你可以关闭这个规则。

Version

This rule was introduced in ESLint v0.15.0 and removed in v1.0.0-rc-1.

更改语言