我的问题:
我正在重构我的一些代码,并为一些长匿名函数命名。不幸的是,它以我不理解的方式破坏了应用程序。
编码
匿名版本运行良好,
警报(distributeurs.length);
不同于0。
var group = this.settings.group, //group used to store all the markers added to the map
leads = this.model.get("leads"), // collection of leads
distributeurs = new Distributeurs(), // collection of distributeurs
map = this.settings.map,
addLeadsCollection = this.addLeadsCollectionFnContructor();
//ajax calls to populate collection
$.when(leads.fetch({ data: $.param({ departementCode: departementCode }) }), distributeurs.fetch({ data: $.param({ departementCode: departementCode }) })).done(
function () //the function
{
alert( distributeurs.length ); //the alert
distributeurs.map( function ( distributeur )
{
addLeadsCollection( leads.filter( function ( lead )
{
return distributeur.get( "id" ) === lead.get( "distribution" );
}
) );
}
);
}
);
命名版本:它什么都不做
警报(distributeurs.length);
始终值为 0。
var group = this.settings.group, //group used to store all the markers added to the map
leads = this.model.get("leads"), // collection of leads
distributeurs = new Distributeurs(), // collection of distributeurs
map = this.settings.map,
addLeadsCollection = this.addLeadsCollectionFnContructor();
//the function
var addCollections = function() {
alert(distributeurs.length); //the alert
distributeurs.map(function(distributeur) {
addLeadsCollection(leads.filter(function(lead) {
return distributeur.get("id") === lead.get("distribution");
}
));
}
);
};
//ajax calls to populate collection
$.when(leads.fetch({ data: $.param({ departementCode: departementCode }) }), distributeurs.fetch({ data: $.param({ departementCode: departementCode }) })).done(
addCollections()
);
我的问题
为什么这两个函数的行为不同,我应该如何声明我的命名函数以使其表现得像匿名函数一样。