Selecting a version will take you to the chosen version of the ESLint docs.

no-func-assign

Disallow reassigning function declarations

Recommended

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:

Open in Playground
/*eslint no-func-assign: "error"*/

function foo() {}
foo = bar;

function baz() {
    baz = bar;
}

let a = function hello() {
  hello = 123;
};

Examples of incorrect code for this rule, unlike the corresponding rule in JSHint:

Open in Playground
/*eslint no-func-assign: "error"*/

foo = bar;
function foo() {}

Examples of correct code for this rule:

Open in Playground
/*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.
}

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.

Resources

Theme Switcher

Selecting a language will take you to the ESLint website in that language.