JS: Function Argument Default Value

By Xah Lee. Date: . Last updated: .

New in ES2015.

Function's parameters can have default value, like this:

function f(param=value) {…}

// function with default parameter values
function f(x=4, y=2) {
    console.log ( x,y );
}

f() ; // 4 2

Default Argument Before ES2015

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

// pre-ES2015. define function with optional parameter and default value

function f (x) {
    if ( x === undefined ) {
        x = 3; // default value
    }
    console.log ( x );
}

f(); // 3

Or, use the “arguments” Object.

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

Default Value Expression Evaluated at Call Time

Default value expression are evaluated at call time. For example,

function f(x=m) { return x; }

the m is evaluated when f is called.

// function, param default value expression is eval'd at call time

let m = 2;

function f(x=m) { return x; }

m = 3;

console.log( f() ); // 3

Later Value Expression Have Access to Previous Value Expression

Later value expression have access to previous value expression.

// function with default value for parameter
// later expression can refer previous
function f(x=4, y=x) {
    return [x , y];
}

console.log(
    f()
); // [4, 4]

Passing undefined

Passing undefined as arguments is equivalent to not passing.

// passing undefined is equivalent as not passing

function f(x=4) {
    console.log ( x );
}

f(undefined); // 4

Passing null

Passing null does not work.

function f (x=3) { console.log ( x ); }

f(null); // null

ECMAScript 2015 §Ordinary and Exotic Objects Behaviours#sec-ecmascript-function-objects

Function Topic

  1. JS: Define Function
  2. JS: Functional Programing
  3. JS: Arrow Function
  4. JS: Function Parameters
  5. JS: f Declaration vs Expression
  6. JS: Closure
  7. JS: Function Call, Apply, Bind
  8. JS: Function Argument Default Value
  9. JS: Function Rest Parameters
  10. JS: Function Argument Destructure
  11. JS: Function Object
  12. JS: Function.prototype
Liket it? Put $5 at patreon.

Or, Buy JavaScript in Depth

Patreon me $5. Ask me question on patreon