【发布时间】:2012-04-01 07:32:14
【问题描述】:
this.config = {
source: psource,
_events: [
'value1',
'value2',
'value3'
]
};
// Add callbacks to source
var that = this;
for (var i = this.config._events.length - 1; i >= 0; i--) {
var name = this.config._events[i];
console.log(name); // correct
$(this.config.source).on(name, function() {
console.log(name); // value1
console.log(that.config._events[i]); // undefined
});
}
我看不出这里有什么问题。我删除了所有复杂的版本并放入了最简单的版本,它根本不想工作。第一个console.log 正确输出了所有正确的名称,但它的作用就像循环同时发生,然后对内部console.log 再次执行。
谁能看出问题所在?
【问题讨论】:
-
“闭包影响一切,而不仅仅是这个”这句话并不是在描述问题——这就是闭包的工作原理。封闭范围内的所有变量都包含在闭包中。
-
请用更具描述性的内容修改问题的标题。我认为您应该提到术语
for loop
标签: javascript loops for-loop closures