繁体   English   中英

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

[英]Recognising variables while assigning a function to a variable in javascript

在我的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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM