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/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/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/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/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/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/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/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/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/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/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 () {
// ...
}
};
使用しない場合
関数括弧の前のスペースの整合性を気にしない場合は、このルールを無効にすることができます。