コンテンツにスキップ

@stylistic/js/

space-before-function-paren

関数をフォーマットする際、関数名または`function`キーワードと開き括弧の間に空白を入れることができます。名前付き関数では`function`キーワードと関数名の間にスペースが必要ですが、匿名関数ではスペースは必要ありません。例えば

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

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

var anonymousWithoutSpace = function() {};

var anonymousWithSpace = function () {};

スタイルガイドによっては、匿名関数の`function`キーワードの後にスペースが必要な場合がありますが、スペースを入れないように指定されている場合もあります。同様に、関数名の後のスペースも必須の場合とそうでない場合があります。

ルールの詳細

このルールは、関数括弧の前のスペースの整合性を強制することを目的としており、スペースが指定された設定と一致しない場合は警告が表示されます。

オプション

このルールには、文字列オプションまたはオブジェクトオプションがあります。

js
{
    "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"`オプションでこのルールに違反するコードの例

js
/*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
違反

デフォルトの`"always"`オプションでこのルールに準拠するコードの例

js
/*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"

`"never"`オプションでこのルールに違反するコードの例

js
/*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
違反

`"never"`オプションでこのルールに準拠するコードの例

js
/*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"}`

`{"anonymous": "always", "named": "never", "asyncArrow": "always"}`オプションでこのルールに違反するコードの例

js
/*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": "always", "named": "never", "asyncArrow": "always"}`オプションでこのルールに準拠するコードの例

js
/*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"}`

`{"anonymous": "never", "named": "always"}`オプションでこのルールに違反するコードの例

js
/*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": "never", "named": "always"}`オプションでこのルールに準拠するコードの例

js
/*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"}`

`{"anonymous": "ignore", "named": "always"}`オプションでこのルールに違反するコードの例

js
/*eslint @stylistic/js/space-before-function-paren: ["error", { "anonymous": "ignore", "named": "always" }]*/
/*eslint-env es6*/

function foo
(
) {
// ... } class Foo { constructor
(
) {
// ... } } var baz = { bar
(
) {
// ... } };
違反

`{"anonymous": "ignore", "named": "always"}`オプションでこのルールに準拠するコードの例

js
/*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 () {
        // ...
    }
};
準拠

使用しない場合

関数括弧の前のスペースの整合性を気にしない場合は、このルールを無効にすることができます。

MIT Licenseの下でリリースされています。