Eslint
规则 | Rules

no-extra-bind

禁止不必要的函数绑定( no-extra-bind )

--fix命令行上的选项可以自动修复一些被这条规则反映的问题。

bind()方法用于创建具有特定this值的函数,并可选地将参数绑定到特定值。当用于指定值时this,函数实际this在函数体中使用是很重要的。例如:

var boundGetName = (function getName() { return this.name; }).bind{ name: "ESLint" } console.log(boundGetName() // "ESLint"

这段代码是一个很好的bind()用于设置this值的例子。

有时在代码维护过程中,该this值将从函数体中删除。在这种情况下,您最终可以通过调用来bind()完成任何事情:

// useless bind var boundGetName = (function getName() { return "ESLint"; }).bind{ name: "ESLint" } console.log(boundGetName() // "ESLint"

在此代码中,引用this已被删除,但bind()仍被使用。在这种情况下,这bind()是不必要的开销(并且性能受到影响),并且可以安全地删除。

规则细节

此规则旨在避免不必要的使用,bind()因此只要立即调用的函数表达式( IIFE )正在使用bind()并且没有适当的this值,就会发出警告。此规则不会标记bind()包含函数参数绑定的用法。

注意:箭头功能不能this使用它们的值设置bind()。此规则将bind()带箭头功能的所有用途标记为问题

此规则的错误代码示例:

/*eslint no-extra-bind: "error"*/ /*eslint-env es6*/ var x = function () { foo( }.bind(bar var x = (() => { foo( }).bind(bar var x = (() => { this.foo( }).bind(bar var x = function () { (function () { this.foo( }() }.bind(bar var x = function () { function foo() { this.bar( } }.bind(baz

此规则的正确代码示例:

/*eslint no-extra-bind: "error"*/ var x = function () { this.foo( }.bind(bar var x = function (a) { return a + 1; }.bind(foo, bar

何时不使用它

如果您不担心不必要的呼叫bind(),则可以安全地禁用此规则。

进一步阅读

版本

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

资源