测试部分评估功能时:
function partialEval(fn)
{
var sliceMethod = Array.prototype.slice;
if(arguments.length > 1)
{
var aps = sliceMethod.call(arguments, 1);
}
return function () {
return fn.apply(this,aps.concat( sliceMethod.call(arguments) ));
};
}
var x= function add(a,b,c,d){
console.debug(a + " - " + b + " - " + c + " - " + d);
return a+b+c+d;
}
var pa = partialEval(add, 1,2); // Query here
var zz = pa(3,4);
console.debug(zz);
调用partialEval(add,1,2)和partialEval(x,1,2)有什么区别? 我知道x是函数文字,使用x给出正确的结果。但是当我使用add作为函数名发送到partialEval方法时,输出结果为3.有人可以解释两者之间的执行差异吗?
感谢。
答案 0 :(得分:3)
当你这样做时:
var x = function add(a,b,c,d){
// code...
}
add
应该只存在于函数内部(并引用自身)。在您需要使用x
的功能之外,add
将为undefined
。
答案 1 :(得分:0)
我相信命名函数是悬挂的,而函数文字则不是。
没有理由同时使用这两种类型。我通常使用匿名函数文字,因为在我看来它将它们映射为对象,它们是。