noFunctionAssign (since v0.7.0)
This rule is recommended by Rome.
Disallow reassigning function declarations.
Examples
Invalid
function foo() { };
foo = bar;
suspicious/noFunctionAssign.js:1:10 lint/suspicious/noFunctionAssign ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ Do not reassign a function declaration.
> 1 │ function foo() { };
│ ^^^
2 │ foo = bar;
3 │
ℹ Reassigned here.
1 │ function foo() { };
> 2 │ foo = bar;
│ ^^^
3 │
ℹ Use a local variable instead.
function foo() {
foo = bar;
}
suspicious/noFunctionAssign.js:1:10 lint/suspicious/noFunctionAssign ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ Do not reassign a function declaration.
> 1 │ function foo() {
│ ^^^
2 │ foo = bar;
3 │ }
ℹ Reassigned here.
1 │ function foo() {
> 2 │ foo = bar;
│ ^^^
3 │ }
4 │
ℹ Use a local variable instead.
foo = bar;
function foo() { };
suspicious/noFunctionAssign.js:2:10 lint/suspicious/noFunctionAssign ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ Do not reassign a function declaration.
1 │ foo = bar;
> 2 │ function foo() { };
│ ^^^
3 │
ℹ Reassigned here.
> 1 │ foo = bar;
│ ^^^
2 │ function foo() { };
3 │
ℹ Reassignment happens here because the function declaration is hoisted.
ℹ Use a local variable instead.
[foo] = bar;
function foo() { };
suspicious/noFunctionAssign.js:2:10 lint/suspicious/noFunctionAssign ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ Do not reassign a function declaration.
1 │ [foo] = bar;
> 2 │ function foo() { };
│ ^^^
3 │
ℹ Reassigned here.
> 1 │ [foo] = bar;
│ ^^^
2 │ function foo() { };
3 │
ℹ Reassignment happens here because the function declaration is hoisted.
ℹ Use a local variable instead.
({ x: foo = 0 } = bar);
function foo() { };
suspicious/noFunctionAssign.js:2:10 lint/suspicious/noFunctionAssign ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ Do not reassign a function declaration.
1 │ ({ x: foo = 0 } = bar);
> 2 │ function foo() { };
│ ^^^
3 │
ℹ Reassigned here.
> 1 │ ({ x: foo = 0 } = bar);
│ ^^^
2 │ function foo() { };
3 │
ℹ Reassignment happens here because the function declaration is hoisted.
ℹ Use a local variable instead.
function foo() {
[foo] = bar;
}
suspicious/noFunctionAssign.js:1:10 lint/suspicious/noFunctionAssign ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ Do not reassign a function declaration.
> 1 │ function foo() {
│ ^^^
2 │ [foo] = bar;
3 │ }
ℹ Reassigned here.
1 │ function foo() {
> 2 │ [foo] = bar;
│ ^^^
3 │ }
4 │
ℹ Use a local variable instead.
(function () {
({ x: foo = 0 } = bar);
function foo() { };
})();
suspicious/noFunctionAssign.js:3:14 lint/suspicious/noFunctionAssign ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ Do not reassign a function declaration.
1 │ (function () {
2 │ ({ x: foo = 0 } = bar);
> 3 │ function foo() { };
│ ^^^
4 │ })();
5 │
ℹ Reassigned here.
1 │ (function () {
> 2 │ ({ x: foo = 0 } = bar);
│ ^^^
3 │ function foo() { };
4 │ })();
ℹ Reassignment happens here because the function declaration is hoisted.
ℹ Use a local variable instead.
Valid
function foo() {
var foo = bar;
}
function foo(foo) {
foo = bar;
}
function foo() {
var foo;
foo = bar;
}
var foo = () => {};
foo = bar;
var foo = function() {};
foo = bar;
var foo = function() {
foo = bar;
};
import bar from 'bar';
function foo() {
var foo = bar;
}