在javascript中将函数分配给变量时识别变量
在我的jQuery脚本中,当用户用动画关闭菜单时,我必须在关闭动画完成后调用函数。我想通过调用带有参数的函数openStrip()来动态分配此函数。我的代码如下所示:在javascript中将函数分配给变量时识别变量,javascript,function,closures,Javascript,Function,Closures,在我的jQuery脚本中,当用户用动画关闭菜单时,我必须在关闭动画完成后调用函数。我想通过调用带有参数的函数openStrip()来动态分配此函数。我的代码如下所示: var FUNCTION_JUST_AFTER_MENU_CLOSE = function(){}; function openStrip(stripId){ FUNCTION_JUST_AFTER_MENU_CLOSE = function(){ createStrip(stripId);
var FUNCTION_JUST_AFTER_MENU_CLOSE = function(){};
function openStrip(stripId){
FUNCTION_JUST_AFTER_MENU_CLOSE = function(){
createStrip(stripId);
});
}
如果我调用openStrip(“aStripId”),我希望函数在菜单关闭之后:
// #1
function(){
createStrip("aStripId");
}
鉴于我目前的代码给出:
//#2
function(){
createStrip(stripId);
}
i、 在关闭菜单后,将函数()赋值给变量函数时,传递给函数openStrip()的参数丢失
我怎样才能避免这种情况
编辑:我发现我的代码实际上在工作。问题出在别处。我感到困惑,因为当我查看Chrome的调试器时,它显示的是函数定义的原样(上图中的2)。但是,当它在代码的后面执行该函数时,它确实计算了传递参数的值,并且endedup执行#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
闭包是通过将变量
stripId
保留在作用域中而不是通过替换代码中出现的每个变量来创建的。功能体没有改变。