我正在尝试调用自调用函数,但它似乎不起作用,因为您可以看到下面的代码我能够发出警报(测试),但当它被另一个函数调用时却不能。请指教-谢谢
var test = (function(a,b){
return a*b;
})(4,5);
function myFunc() {};
alert(test); // working
alert(test.call(myFunc, 10,5)); // not working
我正在尝试调用自调用函数,但它似乎不起作用,因为您可以看到下面的代码我能够发出警报(测试),但当它被另一个函数调用时却不能。请指教-谢谢
var test = (function(a,b){
return a*b;
})(4,5);
function myFunc() {};
alert(test); // working
alert(test.call(myFunc, 10,5)); // not working
您正在评估第 0 行的函数,并将返回值“20”分配给test
. 因为 20 是一个数字,而不是一个函数,所以你不能调用它。请尝试:
var test = function(a,b){
return a*b;
};
alert(test(4,5));
alert(test(10,5));
立即调用函数是在加载脚本时立即执行的函数。在您的示例中, 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.