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

ACy*_*eek 1 javascript variables jquery function

可能重复:
调用变量中指定的JavaScript函数

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

说我有:

function myFunction(){
    // Do something
}

var functionName = "myFunction";
functionName(); // This should run the function named myFunction
Run Code Online (Sandbox Code Playgroud)

这是可以做到的吗?

Viv*_*ath 5

你可以做一些事情:

//if the function is in the global scope:

window["myFunction"](); 
//or
var functionName = "myFunction";
window[functionName]();
Run Code Online (Sandbox Code Playgroud)

或者维护自己的地图:

var functions = {
    myFunction: function() {
        ...
    },
    ...
    myOtherFunction: function() {
        ...
    }
};
Run Code Online (Sandbox Code Playgroud)

然后,以下任一方法都可以:

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

var functionName = "myFunction";
functions[functionName](); //also works
Run Code Online (Sandbox Code Playgroud)

当然,你可以使用eval:

eval(functionName + "()");
Run Code Online (Sandbox Code Playgroud)

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

基于你的小提琴

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

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

var direction = "right";
directions[direction]();
Run Code Online (Sandbox Code Playgroud)