space-before-function-paren
関数をフォーマットする際、関数名または`function`キーワードと開き括弧の間に空白を入れることができます。名前付き関数では`function`キーワードと関数名の間にスペースが必要ですが、匿名関数ではスペースは必要ありません。例えば
function withoutSpace(x) {
// ...
}
function withSpace (x) {
// ...
}
var anonymousWithoutSpace = function() {};
var anonymousWithSpace = function () {};
スタイルガイドによっては、匿名関数の`function`キーワードの後にスペースが必要な場合がありますが、スペースを入れないように指定されている場合もあります。同様に、関数名の後のスペースも必須の場合とそうでない場合があります。
ルールの詳細
このルールは、関数括弧の前のスペースの整合性を強制することを目的としており、スペースが指定された設定と一致しない場合は警告が表示されます。
オプション
このルールには、文字列オプションまたはオブジェクトオプションがあります。
{
"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"`オプションでこのルールに違反するコードの例
/*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"`オプションでこのルールに準拠するコードの例
/*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"`オプションでこのルールに違反するコードの例
/*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"`オプションでこのルールに準拠するコードの例
/*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"}`オプションでこのルールに違反するコードの例
/*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"}`オプションでこのルールに準拠するコードの例
/*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"}`オプションでこのルールに違反するコードの例
/*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"}`オプションでこのルールに準拠するコードの例
/*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"}`オプションでこのルールに違反するコードの例
/*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"}`オプションでこのルールに準拠するコードの例
/*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 () {
// ...
}
};
使用しない場合
関数括弧の前のスペースの整合性を気にしない場合は、このルールを無効にすることができます。