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