noFunctionAssign (since v0.7.0)
This rule is recommended by Rome.
Disallow reassigning function declarations.
Examples
Invalid
function foo() { };
foo = bar; error[js/noFunctionAssign]: Do not reassign a function declaration.
┌─ js/noFunctionAssign.js:1:10
│
1 │ function foo() { };
│ ^^^
2 │ foo = bar;
│ --- Reassigned here.
= note: Use a local variable instead.
function foo() {
foo = bar;
} error[js/noFunctionAssign]: Do not reassign a function declaration.
┌─ js/noFunctionAssign.js:1:10
│
1 │ function foo() {
│ ^^^
2 │ foo = bar;
│ --- Reassigned here.
= note: Use a local variable instead.
foo = bar;
function foo() { }; error[js/noFunctionAssign]: Do not reassign a function declaration.
┌─ js/noFunctionAssign.js:2:10
│
1 │ foo = bar;
│ --- Reassigned here.
2 │ function foo() { };
│ ^^^
= note: Reassignment happens here because the function declaration is hoisted.
= note: Use a local variable instead.
[foo] = bar;
function foo() { }; error[js/noFunctionAssign]: Do not reassign a function declaration.
┌─ js/noFunctionAssign.js:2:10
│
1 │ [foo] = bar;
│ --- Reassigned here.
2 │ function foo() { };
│ ^^^
= note: Reassignment happens here because the function declaration is hoisted.
= note: Use a local variable instead.
({ x: foo = 0 } = bar);
function foo() { }; error[js/noFunctionAssign]: Do not reassign a function declaration.
┌─ js/noFunctionAssign.js:2:10
│
1 │ ({ x: foo = 0 } = bar);
│ --- Reassigned here.
2 │ function foo() { };
│ ^^^
= note: Reassignment happens here because the function declaration is hoisted.
= note: Use a local variable instead.
function foo() {
[foo] = bar;
} error[js/noFunctionAssign]: Do not reassign a function declaration.
┌─ js/noFunctionAssign.js:1:10
│
1 │ function foo() {
│ ^^^
2 │ [foo] = bar;
│ --- Reassigned here.
= note: Use a local variable instead.
(function () {
({ x: foo = 0 } = bar);
function foo() { };
})(); error[js/noFunctionAssign]: Do not reassign a function declaration.
┌─ js/noFunctionAssign.js:3:14
│
2 │ ({ x: foo = 0 } = bar);
│ --- Reassigned here.
3 │ function foo() { };
│ ^^^
= note: Reassignment happens here because the function declaration is hoisted.
= note: 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;
}