版本

no-empty-function

禁止空函数

空函数可能会降低可读性,因为读者需要猜测它是故意的还是非故意的。因此,为空函数编写清晰的注释是一个好习惯。

function foo() {
    // do nothing.
}

特别是,箭头函数的空块可能会让开发人员感到困惑。它与空对象字面量非常相似。

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

规则详情

此规则旨在消除空函数。如果函数包含注释,则不会将其视为问题。

此规则的**错误**代码示例

在 Playground 中打开
/*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) {}
}

此规则的**正确**代码示例

在 Playground 中打开
/*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" - 获取器。
    • "setters" - 设置器。
    • "constructors" - 类构造函数。
    • "asyncFunctions" - 异步函数。
    • "asyncMethods" - 异步类方法和对象字面量的简写方法。

allow: functions

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

在 Playground 中打开
/*eslint no-empty-function: ["error", { "allow": ["functions"] }]*/

function foo() {}

var bar = function() {};

var obj = {
    foo: function() {}
};

allow: arrowFunctions

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

在 Playground 中打开
/*eslint no-empty-function: ["error", { "allow": ["arrowFunctions"] }]*/

var foo = () => {};

allow: generatorFunctions

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

在 Playground 中打开
/*eslint no-empty-function: ["error", { "allow": ["generatorFunctions"] }]*/

function* foo() {}

var bar = function*() {};

var obj = {
    foo: function*() {}
};

allow: methods

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

在 Playground 中打开
/*eslint no-empty-function: ["error", { "allow": ["methods"] }]*/

var obj = {
    foo() {}
};

class A {
    foo() {}
    static foo() {}
}

allow: generatorMethods

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

在 Playground 中打开
/*eslint no-empty-function: ["error", { "allow": ["generatorMethods"] }]*/

var obj = {
    *foo() {}
};

class A {
    *foo() {}
    static *foo() {}
}

allow: getters

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

在 Playground 中打开
/*eslint no-empty-function: ["error", { "allow": ["getters"] }]*/

var obj = {
    get foo() {}
};

class A {
    get foo() {}
    static get foo() {}
}

allow: setters

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

在 Playground 中打开
/*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"] } 选项的**正确**代码示例

在 Playground 中打开
/*eslint no-empty-function: ["error", { "allow": ["constructors"] }]*/

class A {
    constructor() {}
}

allow: asyncFunctions

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

在 Playground 中打开
/*eslint no-empty-function: ["error", { "allow": ["asyncFunctions"] }]*/

async function a(){}

allow: asyncMethods

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

在 Playground 中打开
/*eslint no-empty-function: ["error", { "allow": ["asyncMethods"] }]*/

var obj = {
    async foo() {}
};

class A {
    async foo() {}
    static async foo() {}
}

何时不使用它

如果您不想收到有关空函数的通知,则可以安全地禁用此规则。

版本

此规则在 ESLint v2.0.0 中引入。

资源

更改语言