eslint/func-names 风格
它做了什么
要求或禁止函数表达式使用名称。
为什么这是个问题?
省略函数名称会导致错误堆栈中出现 <anonymous>,这使得定位错误发生的位置更加困难。显式命名函数不仅有助于提高可读性,还能增强代码的一致性。
示例配置:
{
"func-names": ["error", "as-needed", { "generators": "never" }]
}示例
此规则的 错误 代码示例:
/* func-names: ["error", "always"] */
Foo.prototype.bar = function () {};
const cat = { meow: function () {} };
(function () {
/* ... */
})();
export default function () {}此规则的 正确 代码示例:
/* func-names: ["error", "always"] */
Foo.prototype.bar = function bar() {};
const cat = { meow() {} };
(function bar() {
/* ... */
})();
export default function foo() {}as-needed
使用 "as-needed" 选项时,此规则的 错误 代码示例:
/* func-names: ["error", "as-needed"] */
Foo.prototype.bar = function () {};
(function () {
/* ... */
})();
export default function () {}使用 "as-needed" 选项时,此规则的 正确 代码示例:
/* 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" 选项时,此规则的 错误 代码示例:
/* func-names: ["error", "never"] */
Foo.prototype.bar = function bar() {};
(function bar() {
/* ... */
})();使用 "never" 选项时,此规则的 正确 代码示例:
/* func-names: ["error", "never"] */
Foo.prototype.bar = function () {};
(function () {
/* ... */
})();generators
使用 "always", { "generators": "as-needed" } 选项时,此规则的 错误 代码示例:
/* func-names: ["error", "always", { "generators": "as-needed" }] */
(function* () {
/* ... */
})();使用 "always", { "generators": "as-needed" } 选项时,此规则的 正确 代码示例:
/* func-names: ["error", "always", { "generators": "as-needed" }] */
const foo = function* () {};使用 "always", { "generators": "never" } 选项时,此规则的 错误 代码示例:
/* func-names: ["error", "always", { "generators": "never" }] */
const foo = bar(function* baz() {});使用 "always", { "generators": "never" } 选项时,此规则的 正确 代码示例:
/* func-names: ["error", "always", { "generators": "never" }] */
const foo = bar(function* () {});使用 "as-needed", { "generators": "never" } 选项时,此规则的 错误 代码示例:
/* func-names: ["error", "as-needed", { "generators": "never" }] */
const foo = bar(function* baz() {});使用 "as-needed", { "generators": "never" } 选项时,此规则的 正确 代码示例:
/* func-names: ["error", "as-needed", { "generators": "never" }] */
const foo = bar(function* () {});使用 "never", { "generators": "always" } 选项时,此规则的 错误 代码示例:
/* func-names: ["error", "never", { "generators": "always" }] */
const foo = bar(function* () {});使用 "never", { "generators": "always" } 选项时,此规则的 正确 代码示例:
/* func-names: ["error", "never", { "generators": "always" }] */
const foo = bar(function* baz() {});配置
第一个选项
type: "always" | "as-needed" | "never"
"always"
要求所有函数表达式都必须有名称。
"as-needed"
仅在名称无法自动推断时才要求提供名称。
"never"
禁止函数表达式使用名称。
第二个选项
此选项是一个包含以下属性的对象:
generators
生成器函数表达式的配置。若未指定,则使用主配置。
接受值为 always、as-needed 或 never。
生成器函数是指使用 function* 语法定义的函数。
function* foobar(i) {
yield i;
yield i + 10;
}如何使用
要通过配置文件或 CLI 启用 此规则,可以使用:
{
"rules": {
"func-names": "error"
}
}oxlint --deny func-names