
114
4 章 高階関数
}
function doSomething(config) {
var lookup = defaults({critical: 108});
return lookup(config, 'critical');
}
doSomething({critical: 9});
//=> 9
doSomething({});
//=> 108
fnull
関数の使用によって、どのような設定オブジェクトであっても、
undefined
や
null
といった危険な値を気の利いたデフォルト値に変更します。これにより、関数
の最初に長々と続く
o[k] || someDefault
のような防御パターンを避けることができ
ます。
fnull
関数を
defaults
関数の実行部で使用するということは、低レベル関数を
使って高レベルのパーツを構築するという関数型スタイルの性質を実例で示していま
す。同様に、
defaults
関数は配列要素への直接のアクセスに対して一枚レイヤーを提
供するために便利な関数を返します
†
。したがって、この関数型スタイルを利用する
ことで、
doSomething
関数の実行部から離れた別の関数においてデフォルト値とその
検証ロジックをカプセル化できます。
そしてこのテーマの締めくくり、そして本章の集大成として、オブジェクトの
フィールドを検証する関数を構築します。
4.3
すべてを結集:オブジェクトバリデータ
本章の締めくくりとして、任意の基準にもとづいてオブジェクトの妥当性を検証す
るという ...