我可以使用变量的值来启动函数吗?
可能重复:
调用变量中命名的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]();