no-func-assign
Disallow reassigning function declarations
Using the recommended config from @eslint/js in a configuration file
enables this rule
JavaScript functions can be written as a FunctionDeclaration function foo() { ... } or as a FunctionExpression const foo = function() { ... };. While a JavaScript interpreter might tolerate it, overwriting/reassigning a function written as a FunctionDeclaration is often indicative of a mistake or issue.
function foo() {}
foo = bar;
Rule Details
This rule disallows reassigning function declarations.
Examples of incorrect code for this rule:
/*eslint no-func-assign: "error"*/
function foo() {}
= bar;
function baz() {
= bar;
}
let a = function hello() {
= 123;
};
Examples of incorrect code for this rule, unlike the corresponding rule in JSHint:
/*eslint no-func-assign: "error"*/
= bar;
function foo() {}
Examples of correct code for this rule:
/*eslint no-func-assign: "error"*/
let foo = function () {}
foo = bar;
function baz(baz) { // `baz` is shadowed.
baz = bar;
}
function qux() {
const qux = bar; // `qux` is shadowed.
}
Options
This rule has no options.
Handled by TypeScript
It is safe to disable this rule when using TypeScript because TypeScript's compiler enforces this check.
Version
This rule was introduced in ESLint v0.0.9.