Home Reference Source

src/fnil.js

/**
 * 引数がnullだった場合に、指定されたデフォルト値に置き換えて実行する関数を生成します。
 *
 * @param {function} f - 実行する関数
 * @param {*[]} defaultArgs - 引数のデフォルト値
 *
 * @return {function} 引数がnullの場合に指定されたデフォル値を設定してfを実行する関数
 */
export default function fnil(f, ...defaultArgs) {
  return function(...args) {
    for (let i = 0; i < args.length; ++i) {
      if (args[i] === null) {
        args[i] = defaultArgs[i];
      }
    }

    return f(...args);
  };
}