Доклад посмотрел, очень интересно, но ответа там не было. Правильный ответ нашел случайно, в книге Дэвида Флэнагана «JavaScript. Полное руководство». Никакого смысла прятать переменные внутрь if нет, из-за эффекта "подъема". Все переменные внутри функции будут считаться интерпретатором объявленными в самом начале функции.
Там очень много улучшений должно быть на самом деле. В представленном виде код не будет работать при получении элемента из ajax к примеру. Если кому-то придет в голову оформить это в плагин, то да, вы правы. Данный топик и заводился, чтобы не писать велосипед.
Сергей Протько: Спасибо за такие развернутые ответы. Мне не хотелось бы использовать Angular, поскольку я работаю с небольшими проектами. Если нечто похожее используется в Angular, то возможно подобный подход уже выделен в шаблон проектирования и где-то подробно описан?