Javascript просто выполняется потоком по порядку, потому не надо ни о каких сложностях париться, как написано так и сработает.)
(исключая некоторые заморочки с var, setTimeout - но это отдельная тема)
Цитата:
|
а к функции описанной
09 function sum(a, b) {
10 return a + b;
обращений производиться уже не будет никогда.
|
sum - это ссылка на функцию(вообще все объекты в js передаются только по ссылке, а функция тоже объект, да), соотвественно при исполнении
doublingDecorator(sum)
- в функцию doublingDecorator передаётся ссылка на функцию
function sum(a, b) {
return a + b;
}
и внутренняя переменная f тоже становится ссылкой на оную. После чего действием
sum = doublingDecorator(sum)
, sum становится ссылкой уже на новую функцию (temp) созданную внутри doublingDecorator, при этом ссылка на оригинальную всё ещё остаётся во внутренней переменной f.