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"*/
function foo()
var bar = function() ;
var bar = () => ;
function* baz()
var bar = 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"*/
function foo() {
// do nothing.
}
var baz = function() {
// any clear comments.
};
var baz = () => {
bar();
};
function* foobar() {
// do nothing.
}
var baz = 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"
- 類別方法和物件實字的方法簡寫。"generatorMethods"
- 帶有生成器的類別方法和物件實字的方法簡寫。"getters"
- Getters。"setters"
- Setters。"constructors"
- 類別建構子。"asyncFunctions"
- 非同步函式。"asyncMethods"
- 非同步類別方法和物件實字的方法簡寫。
allow: functions
{ "allow": ["functions"] }
選項的正確程式碼範例
在遊樂場中開啟
/*eslint no-empty-function: ["error", { "allow": ["functions"] }]*/
function foo() {}
var bar = function() {};
var obj = {
foo: function() {}
};
allow: arrowFunctions
{ "allow": ["arrowFunctions"] }
選項的正確程式碼範例
在遊樂場中開啟
/*eslint no-empty-function: ["error", { "allow": ["arrowFunctions"] }]*/
var foo = () => {};
allow: generatorFunctions
{ "allow": ["generatorFunctions"] }
選項的正確程式碼範例
在遊樂場中開啟
/*eslint no-empty-function: ["error", { "allow": ["generatorFunctions"] }]*/
function* foo() {}
var bar = function*() {};
var obj = {
foo: function*() {}
};
allow: methods
{ "allow": ["methods"] }
選項的正確程式碼範例
在遊樂場中開啟
/*eslint no-empty-function: ["error", { "allow": ["methods"] }]*/
var obj = {
foo() {}
};
class A {
foo() {}
static foo() {}
}
allow: generatorMethods
{ "allow": ["generatorMethods"] }
選項的正確程式碼範例
在遊樂場中開啟
/*eslint no-empty-function: ["error", { "allow": ["generatorMethods"] }]*/
var obj = {
*foo() {}
};
class A {
*foo() {}
static *foo() {}
}
allow: getters
{ "allow": ["getters"] }
選項的正確程式碼範例
在遊樂場中開啟
/*eslint no-empty-function: ["error", { "allow": ["getters"] }]*/
var obj = {
get foo() {}
};
class A {
get foo() {}
static get foo() {}
}
allow: setters
{ "allow": ["setters"] }
選項的正確程式碼範例
在遊樂場中開啟
/*eslint no-empty-function: ["error", { "allow": ["setters"] }]*/
var obj = {
set foo(value) {}
};
class A {
set foo(value) {}
static set foo(value) {}
}
allow: constructors
{ "allow": ["constructors"] }
選項的正確程式碼範例
在遊樂場中開啟
/*eslint no-empty-function: ["error", { "allow": ["constructors"] }]*/
class A {
constructor() {}
}
allow: asyncFunctions
{ "allow": ["asyncFunctions"] }
選項的正確程式碼範例
在遊樂場中開啟
/*eslint no-empty-function: ["error", { "allow": ["asyncFunctions"] }]*/
async function a(){}
allow: asyncMethods
{ "allow": ["asyncMethods"] }
選項的正確程式碼範例
在遊樂場中開啟
/*eslint no-empty-function: ["error", { "allow": ["asyncMethods"] }]*/
var obj = {
async foo() {}
};
class A {
async foo() {}
static async foo() {}
}
何時不使用它
如果您不希望收到關於空函式的通知,則停用此規則是安全的。
相關規則
版本
此規則在 ESLint v2.0.0 中引入。