gpt4 book ai didi

Javascript闭包: dynamically-defined functions,从当前范围调用方法

转载 作者:行者123 更新时间:2023-11-28 19:56:05 26 4
gpt4 key购买 nike

是否可以有一个静态函数来调用动态定义的函数?我需要这个,因为我无法更改静态函数,而我所知道的是它调用动态函数。例如:

function staticFunc() {
dynamicFunc();
}

function test() {
function dynamicFunc() {console.log('yay');}
staticFunc();
};

test();

但它给了我错误dynamicFunc未定义

我知道,如果我在 test() 中硬编码 staticFunc,它就会起作用。我还注意到,只有在调用 staticFunc 时才会收到错误,而不是在定义它时收到错误(即使 dynamicFunc 尚未定义),这使得它看起来像 staticFunc 正在 test() 的范围内运行,但显然不是。

有办法做到这一点吗?我能想到的唯一方法是创建一个全局函数 funcPtr 并将其分配给我的动态函数。

最佳答案

闭包是您可以在子级别范围中使用父级别范围的变量。在您的情况下,情况正好相反,您在子级作用域中初始化了一个函数,并尝试在父级作用域中调用它,这是不正确的。

您可以将当前函数作为参数传递并调用它:

Here is Demo

function staticFunc(dynamicFunc) {
dynamicFunc();
}

function test() {
var dynamicFunc = function() {console.log('yay');}
staticFunc(dynamicFunc);
};

test();

关于Javascript闭包: dynamically-defined functions,从当前范围调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22531821/

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