Return to Snippet

Revision: 61269
at December 3, 2012 07:48 by davidwaterston


Initial Code
function myFunction(options) {
    // options may contain: opt1, opt2, opt3, opt4

    'use strict';

    // Where a mandatory parameter is missing, throw an error
    if (typeof options !== 'object' || options.opt1 === undefined || options.opt2 === undefined) {
        throw {name: 'Error', message: 'Missing options property: opt1 and opt2 must be provided'};
    }

    // Where an optional parameter is missing, set it to the default value
    var key,
        default_options = {
            opt3  :  'dog',
            opt4  :  99
        };

    for (key in default_options) {
        if (default_options.hasOwnProperty(key)) {
            if (options[key] === undefined) {
                options[key] = default_options[key];
            }
        }
    }

    // All arguments are now available in the format options.opt1, options.opt2, etc

    // Rest of function...

}

Initial URL


Initial Description
A simple template for a JavaScript function which allows for an arbitrary number of named arguments to be passed in. This is achieved by passing a single object as an argument with each of the 'real' arguments being a key/value pair. In this way arguments can be passed in any order and we can easily add in new arguments.

To call, simply pass in an object with the required arguments:
    myFunction ({opt1: 'cat', opt4: 'dog', opt2: 'monkey'})

Validates clean in jsLint.

Initial Title
Template for a Javascript function with optional and mandatory arguments passed as an object collection

Initial Tags
javascript, object, function

Initial Language
JavaScript