列挙子メソッドを備えたほとんどのライブラリ (ネイティブ JavaScript でさえも) ではcontext
、イテレータに a を渡すことができます。
function reduce(iterator, memo, context){
this.each(function(item, idx, list){
memo = iterator.call(context, memo, item, idx, list)
});
return memo;
}
問題は、いつbind
同じ機能を簡単に提供できるのかということです。
stooges.reduce(function(memo, stooge){
...
}, context) // as argument vs...
stooges.reduce(function(memo, stooge){
...
}.bind(context))
bind
これは、すべてのプラットフォームですぐに利用できるわけではないため、当分の間存在するものですか? それとも、単にcall
ing よりもbind
ing の方がオーバーヘッドが少ないからですか? 私はいつも、関数が取る引数が少ないほど良いと読んでいます。つまり、0 引数を取る関数は、1 を取る関数よりも 2 を取る関数よりも優れています。