gpt4 book ai didi

javascript - 使用参数调用 IIFE "later"

转载 作者:行者123 更新时间:2023-11-29 18:01:25 27 4
gpt4 key购买 nike

我的代码中有一个 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?因为我想让这个函数用 param1param2 (我在调用那些 IIFE 之后创建的)做一些事情?目前我收到如下错误:Uncaught ReferenceError: param1 is not defined

最佳答案

按照您编写代码的方式,您将无法在 start() 之外访问 firstIIFE(),因为它是一个内部函数。为了稍后访问它,您需要以某种方式公开它,方法是为该函数设置一个外部变量,或者将它移到 start() 之外并让 start() 只需调用函数,而不是定义它然后立即执行它:

function firstIIFE(param1, param2) {
if (param1 && param2) {
console.log('param1 ',param1, 'param2 ',param2);
return;
}
/* some code done when IIFE originally was self-invoked */
}

(function start() {
/* some code*/

firstIIFE(param1, param2);

/* some code */
}());

function foo() {
firstIIFE(param1, param2);
}

(此时您可能不需要调用它 firstIIFE(),因为它不再遵循立即调用函数表达式模式,而现在只是一个普通的函数调用) .

关于javascript - 使用参数调用 IIFE "later",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34701153/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com