【发布时间】:2016-01-10 01:55:02
【问题描述】:
我的代码中有一个 IIFE,而其他 IIFE 很少。他们都有名字(所以他们不是匿名的)。我想稍后通过其他函数调用一些 IIFE(我的意思是,是的,它们一开始就完成了他们的工作,但我想稍后使用它们)。例如:
(function start()
{
/* some code*/
(function firstIIFE(param1, param2)
{
if (param1 && param2)
{
console.log('param1 ',param1, 'param2 ',param2);
return;
}
/* some code done when IIFE originally was self-invoked */
}(param1, param2));
/* some code */
}());
function foo()
{
start.firstIIFE(param1, param2);
}
以后可以调用 (firstIIFE) IIFE 吗?因为我希望这个函数用param1 和param2(我在调用那些IIFE 之后创建)做一些事情?
目前我收到如下错误:Uncaught ReferenceError: param1 is not defined
【问题讨论】:
-
IIFE=> 立即调用函数表达式 为什么要它们稍后执行? -
因为他们做了一些事情,我想用我的新参数(在 IIFE 完成它的工作后创建)来完成。
-
您可以拥有一个可以保存函数表达式的变量,并且您可以在任何您希望进行常见操作的地方使用该变量..
-
答案就是这么简单,停止使用立即调用的函数模式,使用命名函数,你可以随时调用它们,想调用多少次就行。
标签: javascript invoke iife