javascriptdesign-patternsoptional-parameters

A javascript design pattern for options with default values?


// opt_options is optional
function foo(a, b, opt_options) {
  // opt_c, opt_d, and opt_e are read from 'opt_options', only c and d have defaults
  var opt_c = 'default_for_c';
  var opt_d = 'default_for_d';
  var opt_e; // e has no default

  if (opt_options) {
    opt_c = opt_options.c || opt_c;
    opt_d = opt_options.d || opt_d;
    opt_e = opt_options.e;
  }
}

The above seems awfully verbose. What's a better way to handle argument options with default parameters?


Solution

  • Now that I think about it, I kind of like this:

    function foo(a, b, opt_options) {
      // Force opt_options to be an object
      opt_options = opt_options || {};
    
      // opt_c, opt_d, and opt_e are read from 'opt_options', only c and d have defaults
      var opt_c = 'default_for_c' || opt_options.c;
      var opt_d = 'default_for_d' || opt_options.d;
      var opt_e = opt_options.e; // e has no default
    }