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

хм, конечно читал. на хабре было попроще написано про это (по крайней мере,для меня)

просто, кажется, что, когда функция заменяется чем-либо, то область видимости пропадает. это логика так говорит

но в замыкании анонимная функция может отработать своё и испариться, а область видимости останется, конечно же.

значит,можно делать и так,если я усвоил ....

function a( ){ 

             var num='closure in func1'; 
             alert('fresh func 1');

             func=function(){   
                                   alert("num="+num+"\n\n function a : \n\n"+a)
                                   }
}

a(); // первый вызов

/* изменяем, но так, чтобы исполнение 
    было последовательным.

     я про то, что тут было бы,
     если бы написал внизу

     function a(){alert('another func')}
  */
a=function (){  alert('another func') }

a();
func();


у меня просто нет слов!

функция исполняется, делает свои дела, потом оставляет в window "телефон", на который можно позвонить (это func, там находится замыкание потом).

потом функция a заменяется чем-то другим, что делает совершенно другое
и имеет исходный код без всяких присваиваний!
красота!

это магия!!




..
не могу уже тебе плюсовать
Ответить с цитированием