1. ホーム
  2. javascript

デフォルト値を持つオプションのためのjavascriptのデザインパターン?

2023-10-18 01:51:26

質問

// 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;
  }
}

上記はやけに冗長な印象を受けます。デフォルトのパラメータを持つ引数オプションを処理するためのより良い方法は何でしょうか?

どのように解決するのですか?

今考えると、なんとなくこれでいいかなと思います。

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
}