Arrow functions cannot be bound

- USELESS_ARROW_FUNC_BIND
- Code Quality
- Low
- es6

This rule applies when an arrow function is bound.

Arrow functions are always bound with the `this`

object of the context at which the function is defined, and it cannot be changed.

Therefore, the attempt to bind arrow functions with calling `bind()`

or `call()`

has no effect.

**Note:** Not applied when the first argument of `bind()`

is a dummy value like `undefined`

, `null`

, or `{}`

because copying a function value may be intended.

## Noncompliant Code Example

View with compliant examples side by side```
function Adder(base) {
this.base = base;
var add = (a) => {
return this.base + a;
};
this.addBase = function (baseObj, a) {
return add.call(baseObj, a); // USELESS_ARROW_FUNC_BIND alarm because the bound function 'add' is an arrow function.
};
}
var adder = new Adder(1);
adder.addBase({ base: 2 }, 2); // Return value is 3
```

## Compliant Code Example

View with noncompliant examples side by side```
function Adder(base) {
this.base = base;
var add = (a) => {
return this.base + a;
};
this.addBase = function (baseObj, a) {
this.base = baseObj.base;
return add(a);
};
}
var adder = new Adder(1);
adder.addBase({ base: 2 }, 2); // Return value is 4
```

## Version

This rule was introduced in DeepScan 1.11.0-beta.