javascript - 动态 JavaScript 函数声明

标签 javascript function dynamic declaration

我正在编写一个代码,我必须将不同的函数传递给某些对象。

在本例中,我尝试为 onchange 事件传递不同的函数。所以目前我得到的是这样的:

var ArrayList; //Contains some data to use with ObjectArray format { n: data }
var ObjectArray; //Contains several objects format Array[n] = Object;
for(var key in ArrayList){
    var doFunction = function() {
        Object[key].doSomething(ArrayList[key]);
    }
    Object[key].onchange = doFunction;
}

我认为这里的问题是,我担心它会按照声明的方式执行代码,而不是使用实际变量的值。

有没有办法在函数执行时传递函数值?或者变量会按照其编写的方式进行解析吗?

最佳答案

这是经典的循环函数问题。您需要了解闭包如何工作。

阅读 this answer 的“示例 3”部分小心。整体How do JavaScript closures work?也有疑问。

另一个可能有助于直观理解的示例:

var key = 5;

var onchange = function () {
    console.log(key);
};

onchange(); // 5

key = 10; // the loop reassigns the key on each iteration

onchange(); // 10

关于javascript - 动态 JavaScript 函数声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11637108/

相关文章:

c++ - C++中的调用函数

javascript - 这个函数类似于构造函数吗?

jquery - 如何将 WordPress 的 Disqus 插件与 JQuery Ajaxed 内容集成?

javascript - Twitter Bootstrap ARIA

JavaScript 通过选择选项对表数据进行排序

c++ - 传递函数参数的求值顺序 - F1( int F2( int& x ), int x ) 的操作顺序

javascript - 动态加载图像到 Div

IOS计算自定义单元格的tableview行高

javascript - Bootstrap 未在浏览器上应用

Javascript regEx - 找到括号