Lint Rules

noFunctionAssign (since v0.7.0)

This rule is recommended by Rome.

Disallow reassigning function declarations.

Examples

Invalid

function foo() { };
foo = bar;
correctness/noFunctionAssign.js:1:10 lint/correctness/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;
 }
correctness/noFunctionAssign.js:1:10 lint/correctness/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() { };
correctness/noFunctionAssign.js:2:10 lint/correctness/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() { };
correctness/noFunctionAssign.js:2:10 lint/correctness/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() { };
correctness/noFunctionAssign.js:2:10 lint/correctness/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;
 }
correctness/noFunctionAssign.js:1:10 lint/correctness/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() { };
 })();
correctness/noFunctionAssign.js:3:14 lint/correctness/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;
}