我可以使用变量的值来启动函数吗?

时间:2012-09-19 22:57:16

标签: javascript jquery function variables

  

可能重复:
  Calling a JavaScript function named in a variable

我想使用变量的值作为启动函数的调用,但我不确定它是否可能?

说我有:

function myFunction(){
    // Do something
}

var functionName = "myFunction";
functionName(); // This should run the function named myFunction

这是可以做到的吗?

1 个答案:

答案 0 :(得分:5)

你可以做一些事情:

//if the function is in the global scope:

window["myFunction"](); 
//or
var functionName = "myFunction";
window[functionName]();

或维护自己的地图:

var functions = {
    myFunction: function() {
        ...
    },
    ...
    myOtherFunction: function() {
        ...
    }
};

然后,以下任何一种都可以使用:

functions.myFunction(); //will work
functions["myFunction"](); //will also work;

var functionName = "myFunction";
functions[functionName](); //also works

当然,您可以使用eval

eval(functionName + "()");

但是eval很危险,我推荐它。

基于你的小提琴

您的rightleft函数已在匿名函数的本地范围内定义。这意味着它们是全局window对象的一部分。你应该使用我上面描述的第二种方法(构建你自己的地图):

var directions = {
    right: function() {
        ...
    },
    left: function() {
        ...
    }
    ...
};

var direction = "right";
directions[direction]();