Показать сообщение отдельно
  #5 (permalink)  
Старый 30.08.2012, 21:02
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Kivi Посмотреть сообщение
Вопрос не по этой теме, но по примеру из данного раздела раздела "Декораторы" сайта learn.javascript.ru:

01 function doublingDecorator(f) {
02 return function() {
03 return 2*f.apply(this, arguments); // (*)
04 };
05 }
06
07 // Использование:
08
09 function sum(a, b) {
10 return a + b;
11 }
12
13 sum = doublingDecorator(sum);
14
15 alert( sum(1,2) ); // 6
16 alert( sum(2,3) ); // 10

в строке 13 мы записываем в переменную sum результат, и теперь данная переменная не должна указывать на функцию function sum(a, b) {...}
Кто может указать (где на сайте или в книге Флэнагана) этот момент можно понять, можно и самостоятельно объяснить.
Она и не указывает на функцию sum - она указывает на новую функцию, которая будет вызывать sum (она находится в переменной "f").

Она сохраняется благодаря замыканию.

Статья, по которой Я понял замыкания ( я перечитал их около 10 штук), находится на хабре.
Ответить с цитированием