我有以下代码
this.addHandlers = function (interactions) {
for(var eventType in interactions) {
if(interactions[eventType]) {
this.on(eventType, function () {
// do something with interactions[eventType]
});
}
}
};
jshint给了我以下警告
Don't make functions within a loop
但是因为我需要在循环中创建的eventType变量来完成我的事件处理程序中的闭包,所以我无法在循环外创建函数。我可以通过将this.on
的调用移动到函数中来消除警告,但我觉得这是错过了重点。
我怎么能不在循环中创建函数?
答案 0 :(得分:0)
您必须创建一个函数工厂makeHandler
:
this.addHandlers = function (interactions) {
for(var eventType in interactions) {
if(interactions[eventType]) {
this.on(eventType, makeHandler(evetType));
}
}
};
var makeHandler = function(eventType){
return function(){
// do something with interactions[eventType]
}
}
如果你有jQuery,你可以使用$.each()