How to use unlimited arguments in a JavaScript function?

In JavaScript, functions typically accept a fixed number of parameters, but there are several ways to handle an unlimited number of arguments. This tutorial explores three methods to pass and process multiple arguments in JavaScript functions.

Using ES5 Arguments Object

The arguments object is available in all non-arrow functions and contains all arguments passed to the function, regardless of how many parameters are defined.

Syntax

function functionName(param1, param2) {
   var actualParams = functionName.length;  // Number of defined parameters
   var totalArgs = arguments.length;        // Number of passed arguments
   // Process arguments using arguments object
}

Example

This example demonstrates how to access all arguments using the arguments object:

<html>
<body>
   <h3>Processing Arguments Object</h3>
   <p><b>Input:</b> Seven color names</p>
   <button onclick='displayArgs("Violet", "Indigo", "Blue", "Green", "Yellow", "Orange", "Red")'>Show Arguments</button>
   <div id="output"></div>

   <script>
      function displayArgs(arg1, arg2, arg3) {
         var output = document.getElementById("output");
         var result = "";
         
         result += "Defined parameters: " + displayArgs.length + "<br>";
         result += "Total arguments passed: " + arguments.length + "<br><br>";
         result += "Arguments are:<br>";
         
         for (var i = 0; i < arguments.length; i++) {
            result += (i + 1) + ". " + arguments[i] + "<br>";
         }
         
         output.innerHTML = result;
      }
   </script>
</body>
</html>

Using ES5 Arguments Object as an Array

The arguments object is array-like but not a true array. To use array methods like forEach, map, or reduce, convert it to an array using Array.from().

Syntax

function functionName() {
   const argsArray = Array.from(arguments);
   return argsArray.reduce((accumulator, current) => accumulator + current);
}

Example

This example converts the arguments object to an array and performs multiplication:

<html>
<body>
   <h3>Arguments as Array - Multiplication</h3>
   <p>Product of 5, 10: <span id="result1"></span></p>
   <p>Product of 5, 10, 2: <span id="result2"></span></p>
   <button onclick="calculateProducts()">Calculate</button>

   <script>
      function multiply() {
         const args = Array.from(arguments);
         return args.reduce((total, current) => total * current, 1);
      }
      
      function calculateProducts() {
         document.getElementById("result1").innerHTML = multiply(5, 10);
         document.getElementById("result2").innerHTML = multiply(5, 10, 2);
      }
   </script>
</body>
</html>

Using Rest Parameter Syntax (ES6)

The rest parameter syntax (...args) is the modern ES6 approach for handling unlimited arguments. It creates a true array from the start.

Syntax

function functionName(param1, param2, ...restParams) {
   // restParams is a true array containing remaining arguments
}

Parameters

  • param1, param2 ? Named parameters (optional)

  • ...restParams ? Array containing all remaining arguments

Example

This example uses rest parameters to sum multiple numbers:

<html>
<body>
   <h3>Rest Parameter - Addition</h3>
   <p>Sum of 10, 20, 30: <span id="sum1"></span></p>
   <p>Sum of 10, 20, 30, 40, 50: <span id="sum2"></span></p>
   <button onclick="calculateSums()">Calculate</button>

   <script>
      function add(...numbers) {
         let sum = 0;
         for (const num of numbers) {
            sum += num;
         }
         return sum;
      }
      
      function calculateSums() {
         document.getElementById("sum1").innerHTML = add(10, 20, 30);
         document.getElementById("sum2").innerHTML = add(10, 20, 30, 40, 50);
      }
   </script>
</body>
</html>

Comparison

Method ES Version Array Methods Arrow Functions
arguments object ES5 No (needs conversion) Not available
Array.from(arguments) ES5+ Yes (after conversion) Not available
Rest parameters (...args) ES6 Yes (native array) Yes

Conclusion

Rest parameters (...args) are the recommended modern approach for handling unlimited arguments as they provide a true array and work with arrow functions. The arguments object is still useful for legacy support but requires conversion for array operations.

Updated on: 2026-03-15T21:54:07+05:30

2K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements