1

可能重复:
调用以变量命名的 JavaScript 函数

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

说我有:

function myFunction(){
    // Do something
}

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

这是可以做到的吗?

4

1 回答 1

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]();
于 2012-09-19T22:58:46.877 回答