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:
function withoutSpace(x) {
    // ...
}
function withSpace (x) {
    // ...
}
var anonymousWithoutSpace = function() {};
var anonymousWithSpace = function () {};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:
{
    "space-before-function-paren": ["error", "always"],
    // or
    "space-before-function-paren": ["error", {
        "anonymous": "always",
        "named": "always",
        "asyncArrow": "always"
    }],
}{
    "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.
- neverdisallows 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".
- anonymousis for anonymous function expressions (e.g.- function () {}).
- namedis for named function expressions (e.g.- function foo () {}).
- asyncArrowis for async arrow function expressions (e.g.- async () => {}).
"always" 
Examples of incorrect code for this rule with the default "always" option:
/*eslint @stylistic/js/space-before-function-paren: "error"*/
/*eslint-env es6*/
function foo() {
    // ...
}
var bar = function() {
    // ...
};
var bar = function foo() {
    // ...
};
class Foo {
    constructor() {
        // ...
    }
}
var baz = {
    bar() {
        // ...
    }
};
var baz = async() => 1/*eslint @stylistic/js/space-before-function-paren: "error"*/
/*eslint-env es6*/
function foo() {
    // ...
}
var bar = function() {
    // ...
};
var bar = function foo() {
    // ...
};
class Foo {
    constructor() {
        // ...
    }
}
var baz = {
    bar() {
        // ...
    }
};
var baz = async() => 1Examples of correct code for this rule with the default "always" option:
/*eslint @stylistic/js/space-before-function-paren: "error"*/
/*eslint-env es6*/
function foo () {
    // ...
}
var bar = function () {
    // ...
};
var bar = function foo () {
    // ...
};
class Foo {
    constructor () {
        // ...
    }
}
var baz = {
    bar () {
        // ...
    }
};
var baz = async () => 1/*eslint @stylistic/js/space-before-function-paren: "error"*/
/*eslint-env es6*/
function foo () {
    // ...
}
var bar = function () {
    // ...
};
var bar = function foo () {
    // ...
};
class Foo {
    constructor () {
        // ...
    }
}
var baz = {
    bar () {
        // ...
    }
};
var baz = async () => 1"never" 
Examples of incorrect code for this rule with the "never" option:
/*eslint @stylistic/js/space-before-function-paren: ["error", "never"]*/
/*eslint-env es6*/
function foo () {
    // ...
}
var bar = function () {
    // ...
};
var bar = function foo () {
    // ...
};
class Foo {
    constructor () {
        // ...
    }
}
var baz = {
    bar () {
        // ...
    }
};
var baz = async () => 1/*eslint @stylistic/js/space-before-function-paren: ["error", "never"]*/
/*eslint-env es6*/
function foo () {
    // ...
}
var bar = function () {
    // ...
};
var bar = function foo () {
    // ...
};
class Foo {
    constructor () {
        // ...
    }
}
var baz = {
    bar () {
        // ...
    }
};
var baz = async () => 1Examples of correct code for this rule with the "never" option:
/*eslint @stylistic/js/space-before-function-paren: ["error", "never"]*/
/*eslint-env es6*/
function foo() {
    // ...
}
var bar = function() {
    // ...
};
var bar = function foo() {
    // ...
};
class Foo {
    constructor() {
        // ...
    }
}
var baz = {
    bar() {
        // ...
    }
};
var baz = async() => 1/*eslint @stylistic/js/space-before-function-paren: ["error", "never"]*/
/*eslint-env es6*/
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"} 
Examples of incorrect code for this rule with the {"anonymous": "always", "named": "never", "asyncArrow": "always"} option:
/*eslint @stylistic/js/space-before-function-paren: ["error", {"anonymous": "always", "named": "never", "asyncArrow": "always"}]*/
/*eslint-env es6*/
function foo () {
    // ...
}
var bar = function() {
    // ...
};
class Foo {
    constructor () {
        // ...
    }
}
var baz = {
    bar () {
        // ...
    }
};
var baz = async(a) => await a/*eslint @stylistic/js/space-before-function-paren: ["error", {"anonymous": "always", "named": "never", "asyncArrow": "always"}]*/
/*eslint-env es6*/
function foo () {
    // ...
}
var bar = function() {
    // ...
};
class Foo {
    constructor () {
        // ...
    }
}
var baz = {
    bar () {
        // ...
    }
};
var baz = async(a) => await aExamples of correct code for this rule with the {"anonymous": "always", "named": "never", "asyncArrow": "always"} option:
/*eslint @stylistic/js/space-before-function-paren: ["error", {"anonymous": "always", "named": "never", "asyncArrow": "always"}]*/
/*eslint-env es6*/
function foo() {
    // ...
}
var bar = function () {
    // ...
};
class Foo {
    constructor() {
        // ...
    }
}
var baz = {
    bar() {
        // ...
    }
};
var baz = async (a) => await a/*eslint @stylistic/js/space-before-function-paren: ["error", {"anonymous": "always", "named": "never", "asyncArrow": "always"}]*/
/*eslint-env es6*/
function foo() {
    // ...
}
var bar = function () {
    // ...
};
class Foo {
    constructor() {
        // ...
    }
}
var baz = {
    bar() {
        // ...
    }
};
var baz = async (a) => await a{"anonymous": "never", "named": "always"} 
Examples of incorrect code for this rule with the {"anonymous": "never", "named": "always"} option:
/*eslint @stylistic/js/space-before-function-paren: ["error", { "anonymous": "never", "named": "always" }]*/
/*eslint-env es6*/
function foo() {
    // ...
}
var bar = function () {
    // ...
};
class Foo {
    constructor() {
        // ...
    }
}
var baz = {
    bar() {
        // ...
    }
};/*eslint @stylistic/js/space-before-function-paren: ["error", { "anonymous": "never", "named": "always" }]*/
/*eslint-env es6*/
function foo() {
    // ...
}
var bar = function () {
    // ...
};
class Foo {
    constructor() {
        // ...
    }
}
var baz = {
    bar() {
        // ...
    }
};Examples of correct code for this rule with the {"anonymous": "never", "named": "always"} option:
/*eslint @stylistic/js/space-before-function-paren: ["error", { "anonymous": "never", "named": "always" }]*/
/*eslint-env es6*/
function foo () {
    // ...
}
var bar = function() {
    // ...
};
class Foo {
    constructor () {
        // ...
    }
}
var baz = {
    bar () {
        // ...
    }
};/*eslint @stylistic/js/space-before-function-paren: ["error", { "anonymous": "never", "named": "always" }]*/
/*eslint-env es6*/
function foo () {
    // ...
}
var bar = function() {
    // ...
};
class Foo {
    constructor () {
        // ...
    }
}
var baz = {
    bar () {
        // ...
    }
};{"anonymous": "ignore", "named": "always"} 
Examples of incorrect code for this rule with the {"anonymous": "ignore", "named": "always"} option:
/*eslint @stylistic/js/space-before-function-paren: ["error", { "anonymous": "ignore", "named": "always" }]*/
/*eslint-env es6*/
function foo() {
    // ...
}
class Foo {
    constructor() {
        // ...
    }
}
var baz = {
    bar() {
        // ...
    }
};/*eslint @stylistic/js/space-before-function-paren: ["error", { "anonymous": "ignore", "named": "always" }]*/
/*eslint-env es6*/
function foo() {
    // ...
}
class Foo {
    constructor() {
        // ...
    }
}
var baz = {
    bar() {
        // ...
    }
};Examples of correct code for this rule with the {"anonymous": "ignore", "named": "always"} option:
/*eslint @stylistic/js/space-before-function-paren: ["error", { "anonymous": "ignore", "named": "always" }]*/
/*eslint-env es6*/
var bar = function() {
    // ...
};
var bar = function () {
    // ...
};
function foo () {
    // ...
}
class Foo {
    constructor () {
        // ...
    }
}
var baz = {
    bar () {
        // ...
    }
};/*eslint @stylistic/js/space-before-function-paren: ["error", { "anonymous": "ignore", "named": "always" }]*/
/*eslint-env es6*/
var bar = function() {
    // ...
};
var bar = function () {
    // ...
};
function foo () {
    // ...
}
class Foo {
    constructor () {
        // ...
    }
}
var baz = {
    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.