0

我正在尝试调用自调用函数,但它似乎不起作用,因为您可以看到下面的代码我能够发出警报(测试),但当它被另一个函数调用时却不能。请指教-谢谢

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

function myFunc() {};

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

2 回答 2

2

您正在评估第 0 行的函数,并将返回值“20”分配给test. 因为 20 是一个数字,而不是一个函数,所以你不能调用它。请尝试:

var test = function(a,b){
  return a*b;
};
alert(test(4,5));
alert(test(10,5));
于 2013-01-21T20:35:56.727 回答
0

立即调用函数是在加载脚本时立即执行的函数。在您的示例中, test 旁边的函数立即执行,并返回值 20。

我有一种感觉,你真正想要的是这样的:

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

    return function()
    {
        return a*b;
    }
}());

So in what I wrote above, test will NOT be set to 20. Instead, it'll be set to a function that multiplies a against b and returns 20. Why? Cause when I immediately invoke the function, it's not returning the actual value; it's returning yet another function, and that function then returns the actual value that I'm trying to calculate.

于 2013-01-21T20:41:36.830 回答