JS: Function Parameters

By Xah Lee. Date: . Last updated: .

JavaScript doesn't check the number of arguments passed in a function call.

If there are more arguments passed in a function call than declared parameters, they are ignored.

If less, then extra parameters have values of undefined.

function f (x) { return x;}

// extra arguments are ignored
console.log ( f(2,3,4) === 2 ); // true
// unfilled parameters have value of 「undefined」
function gg (x, y) { return y;}
console.log ( gg(3) === undefined ); // true

Rest Parameters

ES2015 added Rest Parameters feature. It allows you to explicitly declare optional parameters, and they are received in function body as a array.

[see JS: Function Rest Parameters]

Declare Parameter Default Value

To declare default value for parameter, use ES2015 feature for default arguments.

[see JS: Function Argument Default Value]

For pre-ES2015, to define default values for optional parameter, you can just check if a argument is undefined, then set value.

// define function with optional parameter and default value

function f (x, y) {
    if ( y === undefined ) {
        y = 3; // default value
    }
    return x + y;
}

console.log(f(2)); // 5

the 「arguments」 Object

[see JS: Function's “arguments” Object]

How to find the number of arguments passed?

The number of arguments passed is arguments.length.

With ES2015 onward, you should avoid using this feature.

[see JS: Function's “arguments” Object]

How to find out how many parameters are declared?

Function has a .length property. Its value is the number of parameters declared in the function.

console.log (
    (function (x,y) {return x + y;}) .length
);
// 2

With ES2015 onward, you should avoid using this feature.

ES2015 Features

ES2015 has many features that obsolete the need for the argument object. See:

Function Topic

  1. JS: Define Function
  2. JS: Arrow Function
  3. JS: Function Parameters
  4. JS: var/function Order
  5. JS: var Name Scope
  6. JS: Function Declaration vs Function Expression
  7. JS: Closure
  8. JS: Functional Programing
  9. JS: Function Call, Apply, Bind
  10. JS: Function Argument Default Value
  11. JS: Function Rest Parameters
  12. JS: Function Argument Destructure

  1. JS: Function Object
  2. JS: Function.prototype
Liket it? Put $5 at patreon.

Or, Buy JavaScript in Depth