Показать сообщение отдельно
  #7 (permalink)  
Старый 17.03.2012, 12:44
Новичок на форуме
Отправить личное сообщение для Ssipak Посмотреть профиль Найти все сообщения от Ssipak
 
Регистрация: 17.03.2012
Сообщений: 5

Сообщение от Rootpassword Посмотреть сообщение
Ваш код выводит undefined, потому что эквивалентен следующему
(function() {
  var a=1;
  (function(){
    var a; //  оно undefined, 
    alert(a); // Ожидал получить 1, выводит "undefined"
    a=2;
   //  alert(a); // тут уже 2
    (function(){
      alert(a); // Выведет 2.
    })();
  })();
  alert(a); // Выведет 1.
}) ();

Это логично, если прочитать о том, как ищутся в js переменные в вложенных областях видимости и про объект вызова заодно
Спасибо большое за упоминание объекта вызова, по какой-то причине не знал о нём.
Ответить с цитированием