私は決定的なガイドでこのスニペットを読みました:
function not(f)
{
return function()
{
var result=f.apply(this,arguments);
return !result;
}
}
私が理解できないf
のは、この関数はクロージャーにあるため、this
すでにthis
である 、なぜこのスニペットが直接使用しないのvar result=f(arguments);
ですか?
私は、最初のパラメータとして undefined/null を含む s をいくつか読みcall
ましたが、これは直接呼び出しに完全に置き換えることができると思います:
...
while(i>len)
{
if(i in a)
accumulator=f.call(undefined,accumulator,a[i],i,a);
i++;
}
...
なぜ著者は call() を使用し、直接呼び出しを使用しなかったのですか? call()
直接の関数呼び出しと最初のパラメーターとして未定義の違いはありますか?