JavaScript variable number of arguments to function

  1. Home
  2. javascript
  3. JavaScript variable number of arguments to function

Is there a way to allow “unlimited” vars for a function in JavaScript?


load(var1, var2, var3, var4, var5, etc...)

First answer

Sure, just use the arguments object.

function foo() {
  for (var i = 0; i < arguments.length; i++) {

Second answer

Another option is to pass in your arguments in a context object.

function load(context)
    // do whatever with, context.address, etc

and use it like this


This has the advantage that you can add as many named arguments as you want, and the function can use them (or not) as it sees fit.

Third answer

I agree with Ken’s answer as being the most dynamic and I like to take it a step further. If it’s a function that you call multiple times with different arguments – I use Ken’s design but then add default values:

function load(context) {

    var defaults = {
        parameter1: defaultValue1,
        parameter2: defaultValue2,

    var context = extend(defaults, context);

    // do stuff

This way, if you have many parameters but don’t necessarily need to set them with each call to the function, you can simply specify the non-defaults. For the extend method, you can use jQuery’s extend method ($.extend()), craft your own or use the following:

function extend() {
    for (var i = 1; i < arguments.length; i++)
        for (var key in arguments[i])
            if (arguments[i].hasOwnProperty(key))
                arguments[0][key] = arguments[i][key];
    return arguments[0];

This will merge the context object with the defaults and fill in any undefined values in your object with the defaults.

Spread the love

Related articles

Comments are closed.