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 中引入的。
资源
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com

