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.
}
}选项
该规则可以选择允许特定种类的功能为空。
allow(string[]) - 允许空函数的种类列表。列表项是以下字符串中的一部分。一个空的数组([])默认情况下。"functions"- 正常功能。"arrowFunctions"- 箭头功能。"generatorFunctions"- 发电机功能。"methods"- 对象文字的类方法和方法shorthands。"generatorMethods"- 具有生成器的对象文字的类方法和方法shorthands。"getters"- 吸气剂。"setters"- Setters。"constructors"- 类构造函数。
允许:功能
选项的正确代码示例{ "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中引入的。
资源
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com

