无法调用自我调用功能

时间:2013-01-21 20:31:16

标签: javascript

我正在尝试调用自调用函数,但它似乎不起作用,因为您可以看到下面的代码我能够提醒(测试)但不能在其他函数调用时。请指教 - 谢谢

var test = (function(a,b){
       return a*b;
           })(4,5);

function myFunc() {};

alert(test); // working
alert(test.call(myFunc, 10,5)); // not working

2 个答案:

答案 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.相反,它会被设置为一个函数,将ab相乘并返回20.为什么?因为当我立即调用该函数时,它没有返回实际值;它返回另一个函数,然后该函数返回我正在尝试计算的实际值。