可能重复:
调用以变量命名的 JavaScript 函数
我想使用变量的值作为调用来启动一个函数,但我不确定它是否可能?
说我有:
function myFunction(){
// Do something
}
var functionName = "myFunction";
functionName(); // This should run the function named myFunction
这是可以做到的吗?
可能重复:
调用以变量命名的 JavaScript 函数
我想使用变量的值作为调用来启动一个函数,但我不确定它是否可能?
说我有:
function myFunction(){
// Do something
}
var functionName = "myFunction";
functionName(); // This should run the function named myFunction
这是可以做到的吗?
你可以做几件事:
//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
很危险,不推荐。
基于你的小提琴
您的right
和left
函数已在匿名函数的本地范围内定义。这意味着它们不是全局window
对象的一部分。您应该使用我上面描述的第二种方法(构建自己的地图):
var directions = {
right: function() {
...
},
left: function() {
...
}
...
};
var direction = "right";
directions[direction]();