Да, второе закрытие избыточно.
function buildGetJSON(m,t,p,u) {
return function() {
$.getJSON(u, function(data) {
updateParticipants(m,t,data,p);
});
};
}
marker.on("click", buildGetJSON(marker,title,popmsg,url));
Если вы используете buildGetJSON только один раз, вы можете еще больше упростить его, сделав buildGetJSON анонимным.
marker.on("click", function(m,t,p,u) {return function() {
$.getJSON(u, function(data) {
updateParticipants(m,t,data,p);
});
};}(marker,title,popmsg,url));
Вот еще одинспособ сделать это полностью с анонимными функциями.Он не распадается на несколько строк, но я думаю, что это выглядит немного яснее.
!function(m,t,p,u) {
marker.on("click", function() {
$.getJSON(u, function(data) {
updateParticipants(m,t,data,p);
});
});
}(marker,title,popmsg,url);