我正在编写一个代码,我必须将不同的函数传递给某些对象。
在本例中,我尝试为 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/