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