Eslint
规则 | Rules

no-empty-function

Disallow empty functions (no-empty-function)

空函数会降低可读性,因为读者需要猜测它是否是有意的。因此,为空函数写一个明确的评论是一个好习惯。

function foo() { // do nothing. }

尤其是,箭头函数的空白块可能会让开发人员感到困惑。这与空对象文字非常相似。

list.map(() => {} // This is a block, would return undefined. list.map(() => {}) // This is an empty object.

规则细节

这条规则旨在消除空功能。如果函数包含注释,则该函数不会被视为问题。

此规则的错误代码示例:

/*eslint no-empty-function: "error"*/ /*eslint-env es6*/ function foo() {} var foo = function() {}; var foo = () => {}; function* foo() {} var foo = function*() {}; var obj = { foo: function() {}, foo: function*() {}, foo() {}, *foo() {}, get foo() {}, set foo(value) {} }; class A { constructor() {} foo() {} *foo() {} get foo() {} set foo(value) {} static foo() {} static *foo() {} static get foo() {} static set foo(value) {} }

此规则的正确代码示例:

/*eslint no-empty-function: "error"*/ /*eslint-env es6*/ function foo() { // do nothing. } var foo = function() { // any clear comments. }; var foo = () => { bar( }; function* foo() { // do nothing. } var foo = function*() { // do nothing. }; var obj = { foo: function() { // do nothing. }, foo: function*() { // do nothing. }, foo() { // do nothing. }, *foo() { // do nothing. }, get foo() { // do nothing. }, set foo(value) { // do nothing. } }; class A { constructor() { // do nothing. } foo() { // do nothing. } *foo() { // do nothing. } get foo() { // do nothing. } set foo(value) { // do nothing. } static foo() { // do nothing. } static *foo() { // do nothing. } static get foo() { // do nothing. } static set foo(value) { // do nothing. } }

选项

该规则可以选择允许特定种类的功能为空。

  • allowstring[]) - 允许空函数的种类列表。列表项是以下字符串中的一部分。一个空的数组([])默认情况下。

允许:功能

选项的正确代码示例{ "allow": ["functions"] }

/*eslint no-empty-function: ["error", { "allow": ["functions"] }]*/ function foo() {} var foo = function() {}; var obj = { foo: function() {} };

允许:arrowFunctions

选项的正确代码示例{ "allow": ["arrowFunctions"] }

/*eslint no-empty-function: ["error", { "allow": ["arrowFunctions"] }]*/ /*eslint-env es6*/ var foo = () => {};

允许:generatorFunctions

选项的正确代码示例{ "allow": ["generatorFunctions"] }

/*eslint no-empty-function: ["error", { "allow": ["generatorFunctions"] }]*/ /*eslint-env es6*/ function* foo() {} var foo = function*() {}; var obj = { foo: function*() {} };

允许:方法

选项的正确代码示例{ "allow": ["methods"] }

/*eslint no-empty-function: ["error", { "allow": ["methods"] }]*/ /*eslint-env es6*/ var obj = { foo() {} }; class A { foo() {} static foo() {} }

允许:generatorMethods

选项的正确代码示例{ "allow": ["generatorMethods"] }

/*eslint no-empty-function: ["error", { "allow": ["generatorMethods"] }]*/ /*eslint-env es6*/ var obj = { *foo() {} }; class A { *foo() {} static *foo() {} }

允许:getters

选项的正确代码示例{ "allow": ["getters"] }

/*eslint no-empty-function: ["error", { "allow": ["getters"] }]*/ /*eslint-env es6*/ var obj = { get foo() {} }; class A { get foo() {} static get foo() {} }

允许:setters

选项的正确代码示例{ "allow": ["setters"] }

/*eslint no-empty-function: ["error", { "allow": ["setters"] }]*/ /*eslint-env es6*/ var obj = { set foo(value) {} }; class A { set foo(value) {} static set foo(value) {} }

允许:构造函数

选项的正确代码示例{ "allow": ["constructors"] }

/*eslint no-empty-function: ["error", { "allow": ["constructors"] }]*/ /*eslint-env es6*/ class A { constructor() {} }

何时不使用它

如果您不想收到关于空函数的通知,那么禁用此规则是安全的。

相关规则

  • 没有空

这条规则是在ESLint 2.0.0中引入的。

资源