Skip to content
← Back to rules

eslint/func-names スタイル

🛠️💡 An auto-fix and a suggestion are available for this rule for some violations.

何をするか

関数式に名前を付けるか、付けないかを制限します。

なぜ問題なのか

関数に名前を付けずに済ませると、エラーが発生した際のスタックトレースに <anonymous> が表示されます。これは、エラーが発生した場所を見つけることを難しくします。明示的に名前を付けることで、読みやすさと一貫性も向上します。

例:設定ファイル

json
{
  "func-names": ["error", "as-needed", { "generators": "never" }]
}

このルールに違反する誤りのコード例:

js
/* func-names: ["error", "always"] */

Foo.prototype.bar = function () {};
const cat = { meow: function () {} };
(function () {
  /* ... */
})();
export default function () {}

このルールに従う正しいコード例:

js
/* func-names: ["error", "always"] */

Foo.prototype.bar = function bar() {};
const cat = { meow() {} };
(function bar() {
  /* ... */
})();
export default function foo() {}

as-needed

"as-needed" オプションを使用した場合の誤りのコード例:

js
/* func-names: ["error", "as-needed"] */

Foo.prototype.bar = function () {};
(function () {
  /* ... */
})();
export default function () {}

"as-needed" オプションを使用した場合の正しいコード例:

js
/* func-names: ["error", "as-needed"] */

const bar = function () {};
const cat = { meow: function () {} };
class C {
  #bar = function () {};
  baz = function () {};
}
quux ??= function () {};
(function bar() {
  /* ... */
})();
export default function foo() {}

never

"never" オプションを使用した場合の誤りのコード例:

js
/* func-names: ["error", "never"] */

Foo.prototype.bar = function bar() {};
(function bar() {
  /* ... */
})();

"never" オプションを使用した場合の正しいコード例:

js
/* func-names: ["error", "never"] */

Foo.prototype.bar = function () {};
(function () {
  /* ... */
})();

generators

"always", { "generators": "as-needed" } オプションを使用した場合の誤りのコード例:

js
/* func-names: ["error", "always", { "generators": "as-needed" }] */

(function* () {
  /* ... */
})();

"always", { "generators": "as-needed" } オプションを使用した場合の正しいコード例:

js
/* func-names: ["error", "always", { "generators": "as-needed" }] */

const foo = function* () {};

"always", { "generators": "never" } オプションを使用した場合の誤りのコード例:

js
/* func-names: ["error", "always", { "generators": "never" }] */

const foo = bar(function* baz() {});

"always", { "generators": "never" } オプションを使用した場合の正しいコード例:

js
/* func-names: ["error", "always", { "generators": "never" }] */

const foo = bar(function* () {});

"as-needed", { "generators": "never" } オプションを使用した場合の誤りのコード例:

js
/* func-names: ["error", "as-needed", { "generators": "never" }] */

const foo = bar(function* baz() {});

"as-needed", { "generators": "never" } オプションを使用した場合の正しいコード例:

js
/* func-names: ["error", "as-needed", { "generators": "never" }] */

const foo = bar(function* () {});

"never", { "generators": "always" } オプションを使用した場合の誤りのコード例:

js
/* func-names: ["error", "never", { "generators": "always" }] */

const foo = bar(function* () {});

"never", { "generators": "always" } オプションを使用した場合の正しいコード例:

js
/* func-names: ["error", "never", { "generators": "always" }] */

const foo = bar(function* baz() {});

設定

1番目のオプション

type: "always" | "as-needed" | "never"

"always"

すべての関数式に名前が必要です。

"as-needed"

自動的に推論される名前がない場合にのみ名前が必要です。

"never"

関数式に対して名前を許可しません。

2番目のオプション

このオプションは以下のプロパティを持つオブジェクトです:

generators

ジェネレーター関数式の設定。指定しない場合、主な設定が使用されます。

alwaysas-needednever のいずれかを受け入れます。

ジェネレーター関数とは、function* 構文で定義された関数です。

js
function* foobar(i) {
  yield i;
  yield i + 10;
}

使用方法

このルールを有効にするには、設定ファイルまたは CLI で以下のように使用できます:

json
{
  "rules": {
    "func-names": "error"
  }
}
bash
oxlint --deny func-names

参照