Комментарии 13
Функция — это не замыкание.
+2
В определении замыкание — это функция вместе со средой. У Сошникова почти так же
Замыкание (Closure) или более полно — лексическое замыкание (Lexical closure) — это совокупность блока кода и данных того контекста, в котором этот блок порождён.
var a = 20;
function testFn() {
alert(a); // свободная переменная "а" == 20
}
// Замыкание для testFn
closureForTestFn = {
call: testFn // сама функция
lexicalContext: {a: 20} // контекст для поиска свободных переменных
};
+1
Замыкание — это связь функции с переменными снаружи этой функции. Это связь, и ничего более. Функция — отдельное понятие. Замыкание — отдельное. Не надо путать людей, усложнять.
+2
Если честно, я не знаю функционального программирования, но думаю что такое определение дано для того, чтобы лучше описать реализацию замыканий именно в javascript. В данной статье (и спецификации ecmascript) подробно описан этот процесс. Функция это объект (возможно это вас тоже запутает), который имеет свойство [[scope]]. Оно ссылается на цепь областей видимости и создается во время создания объекта функции. Если данная информацию усложняет вам понимание javascript, то не советую читать данную статью (что вы естественно не делали) и тем более спецификацию.
0
Видите ли, я занимаюсь функциональным программированием не первый год. И JavaScript в частности, хотя, конечно, я работаю и с куда более продвинутыми языками функционального программирования. Поэтому определение из вашей статьи лично меня запутать не может. Оно может запутать менее опытных программистов, на которых, по всей видимости, статья и была рассчитана.
Статью я, разумеется, читал.
Статью я, разумеется, читал.
+1
Определение из MDN
Определение из w3schools
The Definitive Guide
Подробности см. в ECMA-262-3 10.1.4 и 13.2
Closures are functions that refer to independent (free) variables.
Определение из w3schools
A JavaScript closure is a function having access to the scope the parent function, after the parent function has returned.
The Definitive Guide
This combination of a function object and a scope (a set of variable bindings) in which the function’s variables are resolved is called a closure in the computer science literature.
Подробности см. в ECMA-262-3 10.1.4 и 13.2
+3
Переводы и чтение, безусловно, хорошо! Но для себя про замыкания, мне проще было понять отсюда
learn.javascript.ru/functions-closures
learn.javascript.ru/functions-closures
+1
dmitrysoshnikov.com/ecmascript/ru-javascript-the-core/#zamyikaniya просто и понятно
+6
dmitrysoshnikov.com/ecmascript/ru-chapter-6-closures/
Статьи Сошникова конечно проще читать и возможно даже полезнее, но на данную статью довольно часто ссылаются в том числе и сам Сошников поэтому решил перевести.
Тема, по сути, избита; существует немалое количество статей, посвящённых этой структуре (некоторые из них очень хорошие, например, статья R. Cornford-a, представленная в списке дополнительной литературы), однако мы постараемся разобрать её более с теоретической точки зрения, и посмотрим, как замыкания в ECMAScript устроены изнутри.
Статьи Сошникова конечно проще читать и возможно даже полезнее, но на данную статью довольно часто ссылаются в том числе и сам Сошников поэтому решил перевести.
+2
JavaScript closures are one of life’s great mysteries. A recent survey on total Internet size
places blog posts about JavaScript closures at around 23%
Functional JavaScript by Michael Fogus
+1
Нагуглил список книг, ссылающихся на эту статью, просто оставлю его здесь.
Список
JavaScript by Example
By Ellie Quigley
JavaScript Cookbook
By Shelley Powers
Beginning Ajax
By Chris Ullman, Lucinda Dykes
Learning JavaScript: Add Sparkle and Life to Your Web Pages
By Shelley Powers
Advanced ASP.NET AJAX Server Controls For .NET Framework 3.5
By Adam Calderon, Joel Rumerman
Pro JavaScript Techniques
By John Resig
Ajax Design Patterns
By Michael Mahemoff
AJAX and PHP: Building Modern Web Applications
By Bogdan Brinzarea, Audra Hendrix
Ajax in Action
By Dave Crane, Eric Pascarello
Microsoft Ajax Library Essentials: Client-side ASP. NET Ajax 1. 0 Explained
By Bogdan Brinzarea
By Ellie Quigley
JavaScript Cookbook
By Shelley Powers
Beginning Ajax
By Chris Ullman, Lucinda Dykes
Learning JavaScript: Add Sparkle and Life to Your Web Pages
By Shelley Powers
Advanced ASP.NET AJAX Server Controls For .NET Framework 3.5
By Adam Calderon, Joel Rumerman
Pro JavaScript Techniques
By John Resig
Ajax Design Patterns
By Michael Mahemoff
AJAX and PHP: Building Modern Web Applications
By Bogdan Brinzarea, Audra Hendrix
Ajax in Action
By Dave Crane, Eric Pascarello
Microsoft Ajax Library Essentials: Client-side ASP. NET Ajax 1. 0 Explained
By Bogdan Brinzarea
0
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Замыкания в Javascript [Часть 1]