DEV Community

Cover image for Duplicate parameters  in JavaScript Functions
capscode
capscode

Posted on • Updated on • Originally published at capscode.in

Duplicate parameters in JavaScript Functions

Hi Devs,

In this article i will introduce you to one of the most confusing and common doubt for every newbie devs, Duplicate parameters in javascript functions

Table Of Contents

First we will see duplicating parameters in regular JavaScript function.

//this is syntax of duplicating parameter in js function
function Func (first, second, first){
        console.log(first, second, first);
    }
Enter fullscreen mode Exit fullscreen mode

In non-strict mode, regular JavaScript functions allow duplicate named parameters

    function Func (first, second, first){
        console.log(first, second, first);
    }
     // first => 1  
     // second => 2
     // first => 3
    Func(1, 2, 3); // 3 2 3

    // first => 1
    // second => 2 
    // first => undefined
    Func(1,2); //undefined  [undefined, 2, undefined]
Enter fullscreen mode Exit fullscreen mode

Lets check this in strict mode,

    function Func(first, second, first){
        "use strict"; 
        console.log(first, second, first);  
    }
    //Throws an error because of duplicate parameters (Strict mode)
Enter fullscreen mode Exit fullscreen mode

In Strict mode we cannot duplicate the parameter name.

How do arrow functions treat duplicate parameters?

Now here is something about arrow functions:

Unlike regular functions, arrow functions do not allow duplicate parameters, whether in strict or non-strict mode. Duplicate parameters will cause a Syntax Error to be thrown._

    // Always throws a syntax error
    const Func =  (first, second, first)  =>                         
    {
        console.log(first, second);  
    }
Enter fullscreen mode Exit fullscreen mode

CONGRATULATIONS, YOU HAVE LEARNT ONE NEW TOPIC TODAY.
VISIT https://www.capscode.in/#/blog TO LEARN MORE...

Thanks,
CapsCode

Discussion (1)

Collapse
lukeshiru profile image
LUKESHIRU

For a second I thought this post was advocating in favor of argument name duplication, but is just showing that if you use strict mode or arrow functions you get an error, which is great because it doesn't have any sense to have arguments with the same name. Are there languages out there that allow you to do that? I can't even think of a case in which you would want that x'D