назначить обработчик и сразу вызвать его

сегодня случайно наткнулся в блоге автора script.aculo.us на любопытный трюк. Нередко бывает нужно выполнять какую-то функцию не только по событию, но и однократно при загрузке страницы. Обычно это делается так: определяем функцию как именованную, вызываем её и назначаем как обработчик:

function fix(){…}
fix();
document.addEventListener('click', fix, false);

однако есть более любопытный и красивый способ добиться этого:

document.addEventListener('click', (function(){
    // do something
    return arguments.callee;
})(), false);

анонимная функция выполняется сразу и возвращает саму себя, чтобы это возвращённое значение можно было сразу использовать. Очень симпатичный трюк! Впрочем, неясно, стоит ли его использовать: из-за своей нетривиальности он заметно повышает WTF-фактор кода. Как думаете, стоит игра свеч?

Артемий Трегубенко,

comments powered by Disqus