gpt4 book ai didi

javascript - 在javascript中将函数分配给变量时识别变量

转载 作者:行者123 更新时间:2023-11-28 08:18:24 24 4
gpt4 key购买 nike

在我的 jQuery 脚本中,当用户关闭带有动画的菜单时,我必须在关闭动画完成后调用一个函数。我想通过使用参数调用函数 openStrip() 来动态分配此函数。我的代码如下所示:

var FUNCTION_JUST_AFTER_MENU_CLOSE = function(){};
function openStrip(stripId){
FUNCTION_JUST_AFTER_MENU_CLOSE = function(){
createStrip(stripId);
});
}

如果我调用 openStrip("aStripId"),我希望 FUNCTION_JUST_AFTER_MENU_CLOSE 为:

// #1    
function(){
createStrip("aStripId");
}

而我当前的代码给出:

//#2
function(){
createStrip(stripId);
}

即,在将 function() 分配给变量 FUNCTION_JUST_AFTER_MENU_CLOSE 时,传递给函数 openStrip() 的参数会丢失。

如何避免这种情况。

编辑:我发现我的代码实际上可以工作。问题出在其他地方。我很困惑,因为当我查看 Chrome 的调试器时,它按原样向我显示函数定义(上面的#2)。但是当它实际上在代码中稍后执行该函数时,它确实评估了传递的参数的值,并最终执行了 #1。

不过还是谢谢你的回答。我将其标记为正确,因为这可能是分配函数的更好方法。

最佳答案

最好的方法是从 openStrip 返回一个函数,如下所示

function openStrip(stripId) {
return function() {
createStrip(stripId);
};
}

例如,

function openStrip(stripId) {
return function() {
console.log(stripId);
};
}

openStrip("aStripId")();
# aStripId
openStrip("bStripId")();
# bStripId

您甚至可以将返回的函数对象分配给不同的变量并稍后使用它们

var aStrip = openStrip("aStripId");
aStrip();
# aStripId
aStrip();
# aStripId

关于javascript - 在javascript中将函数分配给变量时识别变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23322593/

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