我在权威指南中阅读了这个片段:
function not(f)
{
return function()
{
var result=f.apply(this,arguments);
return !result;
}
}
我无法理解的是,既然这个函数f
在闭包中,它this
已经是了this
,为什么这个片段不直接使用var result=f(arguments);
呢?
我什至读了一些call
以 undefined/null 作为第一个参数的 s,我认为可以完全用直接调用代替:
...
while(i>len)
{
if(i in a)
accumulator=f.call(undefined,accumulator,a[i],i,a);
i++;
}
...
为什么作者使用 call() 而不是直接调用?call()
直接函数调用和未定义作为它的第一个参数之间有什么区别吗?