我正在尝试调用自调用函数,但它似乎不起作用,因为您可以看到下面的代码我能够提醒(测试)但不能在其他函数调用时。请指教 - 谢谢
var test = (function(a,b){
return a*b;
})(4,5);
function myFunc() {};
alert(test); // working
alert(test.call(myFunc, 10,5)); // not working
答案 0 :(得分:2)
您正在评估第0行的函数,并将返回值“20”分配给test
。由于20是数字,而不是函数,因此无法调用它。请尝试改为:
var test = function(a,b){
return a*b;
};
alert(test(4,5));
alert(test(10,5));
答案 1 :(得分:0)
立即调用函数是在加载脚本时正确执行的函数。在您的示例中,test旁边的函数立即执行,并返回值20。
我有一种感觉,你真正想要的是这样的:
var test = (function()
{
var a = 4,
b = 5;
return function()
{
return a*b;
}
}());
所以在我上面写的内容中,test不会设置为20.相反,它会被设置为一个函数,将a
与b
相乘并返回20.为什么?因为当我立即调用该函数时,它没有返回实际值;它返回另一个函数,然后该函数返回我正在尝试计算的实际值。