mirror of
https://git.proxmox.com/git/pve-eslint
synced 2025-10-06 03:00:43 +00:00

includes a (minimal) working wrapper Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
369 lines
6.4 KiB
Markdown
369 lines
6.4 KiB
Markdown
# Require or disallow a space before function parenthesis (space-before-function-paren)
|
|
|
|
When formatting a function, whitespace is allowed between the function name or `function` keyword and the opening paren. Named functions also require a space between the `function` keyword and the function name, but anonymous functions require no whitespace. For example:
|
|
|
|
```js
|
|
function withoutSpace(x) {
|
|
// ...
|
|
}
|
|
|
|
function withSpace (x) {
|
|
// ...
|
|
}
|
|
|
|
var anonymousWithoutSpace = function() {};
|
|
|
|
var anonymousWithSpace = function () {};
|
|
```
|
|
|
|
Style guides may require a space after the `function` keyword for anonymous functions, while others specify no whitespace. Similarly, the space after a function name may or may not be required.
|
|
|
|
## Rule Details
|
|
|
|
This rule aims to enforce consistent spacing before function parentheses and as such, will warn whenever whitespace doesn't match the preferences specified.
|
|
|
|
## Options
|
|
|
|
This rule has a string option or an object option:
|
|
|
|
```js
|
|
{
|
|
"space-before-function-paren": ["error", "always"],
|
|
// or
|
|
"space-before-function-paren": ["error", {
|
|
"anonymous": "always",
|
|
"named": "always",
|
|
"asyncArrow": "always"
|
|
}],
|
|
}
|
|
```
|
|
|
|
* `always` (default) requires a space followed by the `(` of arguments.
|
|
* `never` disallows any space followed by the `(` of arguments.
|
|
|
|
The string option does not check async arrow function expressions for backward compatibility.
|
|
|
|
You can also use a separate option for each type of function.
|
|
Each of the following options can be set to `"always"`, `"never"`, or `"ignore"`. The default is `"always"`.
|
|
|
|
* `anonymous` is for anonymous function expressions (e.g. `function () {}`).
|
|
* `named` is for named function expressions (e.g. `function foo () {}`).
|
|
* `asyncArrow` is for async arrow function expressions (e.g. `async () => {}`).
|
|
|
|
### "always"
|
|
|
|
Examples of **incorrect** code for this rule with the default `"always"` option:
|
|
|
|
```js
|
|
/*eslint space-before-function-paren: "error"*/
|
|
/*eslint-env es6*/
|
|
|
|
function foo() {
|
|
// ...
|
|
}
|
|
|
|
var bar = function() {
|
|
// ...
|
|
};
|
|
|
|
var bar = function foo() {
|
|
// ...
|
|
};
|
|
|
|
class Foo {
|
|
constructor() {
|
|
// ...
|
|
}
|
|
}
|
|
|
|
var foo = {
|
|
bar() {
|
|
// ...
|
|
}
|
|
};
|
|
|
|
var foo = async() => 1
|
|
```
|
|
|
|
Examples of **correct** code for this rule with the default `"always"` option:
|
|
|
|
```js
|
|
/*eslint space-before-function-paren: "error"*/
|
|
/*eslint-env es6*/
|
|
|
|
function foo () {
|
|
// ...
|
|
}
|
|
|
|
var bar = function () {
|
|
// ...
|
|
};
|
|
|
|
var bar = function foo () {
|
|
// ...
|
|
};
|
|
|
|
class Foo {
|
|
constructor () {
|
|
// ...
|
|
}
|
|
}
|
|
|
|
var foo = {
|
|
bar () {
|
|
// ...
|
|
}
|
|
};
|
|
|
|
var foo = async () => 1
|
|
```
|
|
|
|
### "never"
|
|
|
|
Examples of **incorrect** code for this rule with the `"never"` option:
|
|
|
|
```js
|
|
/*eslint space-before-function-paren: ["error", "never"]*/
|
|
/*eslint-env es6*/
|
|
|
|
function foo () {
|
|
// ...
|
|
}
|
|
|
|
var bar = function () {
|
|
// ...
|
|
};
|
|
|
|
var bar = function foo () {
|
|
// ...
|
|
};
|
|
|
|
class Foo {
|
|
constructor () {
|
|
// ...
|
|
}
|
|
}
|
|
|
|
var foo = {
|
|
bar () {
|
|
// ...
|
|
}
|
|
};
|
|
|
|
var foo = async () => 1
|
|
```
|
|
|
|
Examples of **correct** code for this rule with the `"never"` option:
|
|
|
|
```js
|
|
/*eslint space-before-function-paren: ["error", "never"]*/
|
|
/*eslint-env es6*/
|
|
|
|
function foo() {
|
|
// ...
|
|
}
|
|
|
|
var bar = function() {
|
|
// ...
|
|
};
|
|
|
|
var bar = function foo() {
|
|
// ...
|
|
};
|
|
|
|
class Foo {
|
|
constructor() {
|
|
// ...
|
|
}
|
|
}
|
|
|
|
var foo = {
|
|
bar() {
|
|
// ...
|
|
}
|
|
};
|
|
|
|
var foo = async() => 1
|
|
```
|
|
|
|
### `{"anonymous": "always", "named": "never", "asyncArrow": "always"}`
|
|
|
|
Examples of **incorrect** code for this rule with the `{"anonymous": "always", "named": "never", "asyncArrow": "always"}` option:
|
|
|
|
```js
|
|
/*eslint space-before-function-paren: ["error", {"anonymous": "always", "named": "never", "asyncArrow": "always"}]*/
|
|
/*eslint-env es6*/
|
|
|
|
function foo () {
|
|
// ...
|
|
}
|
|
|
|
var bar = function() {
|
|
// ...
|
|
};
|
|
|
|
class Foo {
|
|
constructor () {
|
|
// ...
|
|
}
|
|
}
|
|
|
|
var foo = {
|
|
bar () {
|
|
// ...
|
|
}
|
|
};
|
|
|
|
var foo = async(a) => await a
|
|
```
|
|
|
|
Examples of **correct** code for this rule with the `{"anonymous": "always", "named": "never", "asyncArrow": "always"}` option:
|
|
|
|
```js
|
|
/*eslint space-before-function-paren: ["error", {"anonymous": "always", "named": "never", "asyncArrow": "always"}]*/
|
|
/*eslint-env es6*/
|
|
|
|
function foo() {
|
|
// ...
|
|
}
|
|
|
|
var bar = function () {
|
|
// ...
|
|
};
|
|
|
|
class Foo {
|
|
constructor() {
|
|
// ...
|
|
}
|
|
}
|
|
|
|
var foo = {
|
|
bar() {
|
|
// ...
|
|
}
|
|
};
|
|
|
|
var foo = async (a) => await a
|
|
```
|
|
|
|
### `{"anonymous": "never", "named": "always"}`
|
|
|
|
Examples of **incorrect** code for this rule with the `{"anonymous": "never", "named": "always"}` option:
|
|
|
|
```js
|
|
/*eslint space-before-function-paren: ["error", { "anonymous": "never", "named": "always" }]*/
|
|
/*eslint-env es6*/
|
|
|
|
function foo() {
|
|
// ...
|
|
}
|
|
|
|
var bar = function () {
|
|
// ...
|
|
};
|
|
|
|
class Foo {
|
|
constructor() {
|
|
// ...
|
|
}
|
|
}
|
|
|
|
var foo = {
|
|
bar() {
|
|
// ...
|
|
}
|
|
};
|
|
```
|
|
|
|
Examples of **correct** code for this rule with the `{"anonymous": "never", "named": "always"}` option:
|
|
|
|
```js
|
|
/*eslint space-before-function-paren: ["error", { "anonymous": "never", "named": "always" }]*/
|
|
/*eslint-env es6*/
|
|
|
|
function foo () {
|
|
// ...
|
|
}
|
|
|
|
var bar = function() {
|
|
// ...
|
|
};
|
|
|
|
class Foo {
|
|
constructor () {
|
|
// ...
|
|
}
|
|
}
|
|
|
|
var foo = {
|
|
bar () {
|
|
// ...
|
|
}
|
|
};
|
|
```
|
|
|
|
### `{"anonymous": "ignore", "named": "always"}`
|
|
|
|
Examples of **incorrect** code for this rule with the `{"anonymous": "ignore", "named": "always"}` option:
|
|
|
|
```js
|
|
/*eslint space-before-function-paren: ["error", { "anonymous": "ignore", "named": "always" }]*/
|
|
/*eslint-env es6*/
|
|
|
|
function foo() {
|
|
// ...
|
|
}
|
|
|
|
class Foo {
|
|
constructor() {
|
|
// ...
|
|
}
|
|
}
|
|
|
|
var foo = {
|
|
bar() {
|
|
// ...
|
|
}
|
|
};
|
|
```
|
|
|
|
Examples of **correct** code for this rule with the `{"anonymous": "ignore", "named": "always"}` option:
|
|
|
|
```js
|
|
/*eslint space-before-function-paren: ["error", { "anonymous": "ignore", "named": "always" }]*/
|
|
/*eslint-env es6*/
|
|
|
|
var bar = function() {
|
|
// ...
|
|
};
|
|
|
|
var bar = function () {
|
|
// ...
|
|
};
|
|
|
|
function foo () {
|
|
// ...
|
|
}
|
|
|
|
class Foo {
|
|
constructor () {
|
|
// ...
|
|
}
|
|
}
|
|
|
|
var foo = {
|
|
bar () {
|
|
// ...
|
|
}
|
|
};
|
|
```
|
|
|
|
## When Not To Use It
|
|
|
|
You can turn this rule off if you are not concerned with the consistency of spacing before function parenthesis.
|
|
|
|
## Related Rules
|
|
|
|
* [space-after-keywords](space-after-keywords.md)
|
|
* [space-return-throw-case](space-return-throw-case.md)
|