测试部分评估函数时:
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。有人可以解释两者之间的执行差异吗?
谢谢。
最佳答案
当你这样做时:
var x = function add(a,b,c,d){
// code...
}
add
应该只存在于函数内部(并引用自身)。在您需要使用 x
的函数之外,add
将是 undefined
。
关于javascript函数名称与函数文字用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7181280/