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

标签 javascript jquery function variables

<分区>

Possible Duplicate:
Calling a JavaScript function named in a variable

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

说我有:

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]();

或者维护你自己的 map :

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 很危险,我推荐它。

基于您的 fiddle

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

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

var direction = "right";
directions[direction]();

关于javascript - 我可以使用变量的值来启动函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12504037/

相关文章:

javascript - 将 jQuery 从 1.8 更新到 1.11 <a> 标签未附加

javascript - 将 console.count() 保存为整数的方法?

javascript - 如何获取当前选中的HTML标签的名称?

javascript - Chrome 扩展回调传递两个值,其中一个显示未定义?

javascript - 为什么在 javascript 中,一个自调用的匿名函数会包围 jQuery onReady 回调?

javascript - 如何将 ul 标签中的所有元素设置为相同的最大宽度(自动换行)?

function - OCaml:绑定(bind)表达式与函数

javascript - 如何在 jQuery 中使用两个或多个时间选择器

javascript - 复选框订单 Javascript

c - 这段C代码有什么问题? (未按预期工作)