firebug ошибочно говорит мне, что моя переменная не определена - PullRequest
5 голосов
/ 21 июля 2010

Я устанавливаю точку останова в коде ниже, где написано «точка останова».Также добавляем выражение наблюдения для dataStore.

function(){
  var self = {};
  var dataStore = [];
  var areEq = UNAB.objectsAreEqual;

  self.put = function(key, value){
    /*breakpoint*/ dataStore.push({key:key, value:value});
  }
  return self;
}

На этой точке останова Firebug сообщает мне «ReferenceError: dataStore не определен».Те же результаты с попыткой изучить "areEq".Однако dataStore.push выполняется без ошибок.Еще одна странность: добавление наблюдательного выражения для «self» показывает не ожидаемый мной объект self с одним свойством «put», а объект «window».

Есть идеи, что происходит?

Ответы [ 2 ]

1 голос
/ 22 июля 2010

Я думаю, что это ошибка Firefox. Если вы установите точку останова на var dataStore = []; затем продолжайте, когда достигните точки останова в put (). Вы получаете область закрытия (в Firebug 1.6). В этой области есть dataStore и self. Я думаю, что Firefox оптимизирует область закрытия, возможно, поскольку в любом случае код бессмысленен: нет доступа к хранилищу данных.

Полный контрольный пример в конечном итоге появится на http://getfirebug.com/tests/script/stackoverflow/dataStoreIsNotDefined.html

см. Также https://developer.mozilla.org/en/DOM/window.self

1 голос
/ 21 июля 2010

Вероятно, self разрешается Firebug и, возможно, также Firefox в глобальной области видимости, ссылаясь на текущее окно. Если вы выберете другое имя, отличное от «self», ваш код должен сделать всех счастливыми.

...