首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

no-extra-bind

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

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

代码语言:javascript
复制
var boundGetName = (function getName() {
    return this.name;
}).bind({ name: "ESLint" });

console.log(boundGetName());      // "ESLint"

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

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

代码语言:javascript
复制
// 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()带箭头功能的所有用途标记为问题

此规则的错误代码示例:

代码语言:javascript
复制
/*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);

此规则的正确代码示例:

代码语言:javascript
复制
/*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 中引入的。

资源

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com