Javascript закрытия в Firebug - PullRequest
       14

Javascript закрытия в Firebug

4 голосов
/ 15 декабря 2010

итак ... я пытаюсь научиться этому новому, называемому замыканиями ... новым для меня .... Из академического интереса:

ОПИСАНИЕ

Когда я создаю глобальную переменную или функцию в JS - я легко вижу их на вкладке DOM firebug (они прикреплены к объекту Window). Когда я создаю объекты - та же история. Я вижу объекты на вкладке Firebug DOM.

ВОПРОС:

Как насчет переменных и функций внутри замыканий - где они прикреплены? Я не вижу этих закрывающих переменных на вкладке DOM в Firebug. Это так, как это должно работать?

(function () {
    var test1 = 'test'; //do't se it in DOM
    function test2(){  //do't see it in DOM
    }
}());

Ответы [ 2 ]

2 голосов
/ 15 декабря 2010

На вкладке DOM показаны только переменные и функции, определенные глобально.Он никогда не показывает локальные переменные или функции.

Замыкания означают, что локальная переменная, используемая локальной функцией, будет оставаться в памяти до тех пор, пока сама функция остается в памяти, а не уничтожается сразу.Поскольку все дело в локальных , они не отображаются в списке глобальных переменных на вкладке DOM.

Примите во внимание следующее:

  var increment = (function(){
    var i = 0;
    return function() { 
      return i++;
    }
  })();

  increment(); // should return 0
  increment(); // should return 1

Вы по-прежнему можете видеть значение i, но оно доступно только из замыкания, поэтому вам необходимо установить точку останова на return i++; в строке и найдите i в разделе «локальные переменные» на вкладке Script .

0 голосов
/ 31 июля 2014

Ну, это старая история.Более новые версии Firebug (начиная с 1.11.2) также могут показывать закрывающие переменные.Используя командную строку, введите следующее.

closure.%variable

Или вы можете использовать панели наблюдения DOM для отображения переменных замыкания, щелкнув стрелку справа рядом с вкладкой DOM и выбрав опцию показать закрытие.

Подробнее здесь

...