JavaScriptで関数を宣言するときに、引数の長さや型をある程度柔軟に受け入れるようにしたいことがよくある。いわゆるvariadic関数というやつだ。 ”いい感じ”の引数を考えてみる 例えば, doSomething(value1[, value2,...], options, callback); のように、 複数の文字列 オプションオブジェクト コールバック関数 をとって、以下のパターンどれでもいい感じに解釈するようにしたい。 doSomething('foo') doSomething('foo','bar') doSomething('foo','bar', 'baz'); doSomething('foo','bar', {verbose:true}); doSomething('foo','bar', function done(){/*...*/}) doSomethin