# space-before-function-parentheses

在函数定义中打开括号之前强制保持一致的间距。

(已删除)此规则在 ESLint v1.0 中已删除,并由 space-before-function-paren 规则替换。为了与其他规则的名称保持一致,规则的名称从 "parentheses" 更改为 "paren"。

格式化函数时,函数名或 function 关键字与左括号之间允许有空格。命名函数在 function 关键字和函数名之间也需要一个空格,但匿名函数不需要空格。例如:

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

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

var anonymousWithoutSpace = function() {};

var anonymousWithSpace = function () {};

样式指南可能要求匿名函数的 function 关键字后有一个空格,而另一些则不指定空格。同样,函数名后面的空格可能需要也可能不需要。

# 规则详情

此规则旨在在函数括号之前强制执行一致的间距,因此,只要空格与指定的首选项不匹配,就会发出警告。

这条规则有一个论据。如果是默认选项 "always",则所有命名函数和匿名函数都必须在函数括号前有空格。如果是 "never",那么所有命名函数和匿名函数在函数括号之前不能有空格。如果您想要命名函数和匿名函数的不同间距,您可以将配置对象作为规则参数传递以分别配置它们(例如 {"anonymous": "always", "named": "never"})。

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

/*eslint-env es6*/

function foo() {
    // ...
}

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

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

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

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

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

/*eslint-env es6*/

function foo () {
    // ...
}

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

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

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

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

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

/*eslint-env es6*/

function foo () {
    // ...
}

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

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

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

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

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

/*eslint-env es6*/

function foo() {
    // ...
}

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

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

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

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

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

/*eslint-env es6*/

function foo () {
    // ...
}

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

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

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

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

/*eslint-env es6*/

function foo() {
    // ...
}

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

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

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

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

/*eslint-env es6*/

function foo() {
    // ...
}

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

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

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

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

/*eslint-env es6*/

function foo () {
    // ...
}

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

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

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

# 何时不使用

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

Last Updated: 5/13/2023, 8:55:38 PM