How to fix jslint error ‘Don’t make functions within a loop.’?

Douglas Crockford has a new idiomatic way of achieving the above – his old technique was to use an inner function to bind the variables, but the new technique uses a function maker. See slide 74 in the slides to his “Function the Ultimate” talk. [This slideshare no longer exists]

For the lazy, here is the code:

function make_handler(div_id) {
    return function () {
        alert(div_id);
    };
}
for (i ...) {
    div_id = divs[i].id;
    divs[i].onclick = make_handler(div_id);
}

Leave a Comment