Skip to content

Instantly share code, notes, and snippets.

@nickreffitt
Forked from klovadis/gist:2549131
Last active July 9, 2016 15:52
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nickreffitt/819bfdddb3f132eb9428 to your computer and use it in GitHub Desktop.
Save nickreffitt/819bfdddb3f132eb9428 to your computer and use it in GitHub Desktop.
// example function where arguments 2 and 3 are optional
function example( err, optionalA, optionalB, callback ) {
// retrieve arguments as array
var args = [].slice.call(arguments);
// first argument is the error object
// shift() removes the first item from the
// array and returns it
err = args.shift();
// last argument is the callback function.
// pop() removes the last item in the array
// and returns it
callback = args.pop();
// if args still holds items, these are
// your optional items which you could
// retrieve one by one like this:
optionalA = (args.length > 0) ? args.shift() : null;
optionalB = (args.length > 0) ? args.shift() : null;
// continue as usual: check for errors
if (err) return callback(err);
// for tutorial purposes, log the optional parameters
console.log('optionalA:', optionalA);
console.log('optionalB:', optionalB);
/* do your thing */
} // example()
// invoke example function with and without optional arguments
example(null, function (err) { /* do something */ });
example(null, 'AA', function (err) {});
example(null, 'AAAA', 'BBBB', function (err) {});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment