27.03.2008

JavaScript: Closure

На русский closure обычно переводят как «замыкание».

John Resig в своей книге Pro JavaScript Techniques, которую я сейчас читаю, привел ссылку на статью JavaScript Closures. Это очень мощная, пожалуй, самая глубокая и фундаментальная статья по JavaScript, которую я когда-либо читал. Респект автору, Ричарду Корнфорду.

Стал копать дальше, нашел еще замечательную статью: JavaScript Closures for Dummies. Написано очень понятно, с хорошими примерами. Рекомендую начать с этой статьи, если вы только осваиваете closure. Отдельно отметим оригинальную находку автора поместить кусочек JavaScript-кода на кнопку, который этот код запускает.

Также достойны вашего внимания еще две статьи о closure: на Википедии и Мартина Фаулера. В этих статьях речь идет о closure вообще как о концепции программирования, безотносительно к JavaScript.

Что касается книги Ресига, то я несколько разочарован. Материал изложен поверхностно, не хватает глубины как в статье Корнфорда. Много опечаток и ошибок. Как раз в одном из примеров на closure есть концептуальная ошибка, пример не работает. Не понятно как так можно, что он, не оттестировал примеры перед публикацией что-ли?

UPD: Ошибка в примере на closure (листинг 2-16) есть только в исходном коде, который можно скачать с сайта книги. В самой книге этой ошибки нет.

Жду книгу Дугласа Крокфорда. Надеюсь, старина Крокфорд не подведет :-)

4 комментария:

Анонимный комментирует...

Спасибо за ссылочки. Сам сейчас читаю книгу "JavaScript: The Definitive Guide, 5th Edition" Девила Фленегана, и всё никак не могу догнать что скрывается под словом closure. Надеюсь информация за ссылками немного прояснит ситуацию.

Кстати, указанную выше книгу очень рекомендую.

Степан Резников комментирует...

Рекомендую посмотреть лекции Дугласа Крокфорда:

http://developer.yahoo.com/yui/theater/

* The JavaScript Programming Language
* An Inconvenient API: The Theory of the DOM
* Advanced JavaScript
ну и потом все остальные

В какой-то из лекций Дуглас очень доходчиво объяснял про closure.

Dzyanis Kuzmenka комментирует...

Для таких лузеров как я, русская версия про замыкание http://javascript.ru/tags/closure

Анонимный комментирует...

Интересная заметка, как раз искал инфу по этой теме.