javascript - firebug 错误地告诉我我的变量没有定义

标签 javascript firebug

我在下面显示“断点”的代码中设置了一个断点。还为 dataStore 添加了一个 watch 表达式。

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 is not defined”。尝试检查“areEq”的结果相同。但是,dataStore.push 执行时没有错误。另一个奇怪之处:为“self”添加一个 watch 表达式显示的不是我期望的具有一个属性“put”的 self 对象,而是“window”对象。

知道到底发生了什么吗?

最佳答案

我认为这是一个 Firefox 错误。如果你设置一个断点 变种数据存储= []; 然后继续,当在 put() 中遇到断点时。你得到一个闭包范围(在 Firebug 1.6 中)。该范围具有 dataStore 和 self。我认为 Firefox 正在优化闭包范围,也许是因为代码无论如何都是无稽之谈:没有办法访问数据存储。

一个完整的测试用例最终会出现在 http://getfirebug.com/tests/script/stackoverflow/dataStoreIsNotDefined.html

另见 https://developer.mozilla.org/en/DOM/window.self

关于javascript - firebug 错误地告诉我我的变量没有定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3302399/

相关文章:

php - Jquery Button 使表单可见

javascript - 两个 setTimeout 函数不能单独工作

javascript - 我应该使用什么工具来查看客户端通过 AJAX 发生的 GET 和 POST 请求的详细信息?

javascript - 从字符串末尾删除空格不起作用

javascript - 如何隐藏滚动 spy 中的其他内容而不是滚动到特定位置

javascript - 我可以将 DOM 视为树形图吗?

Firefox Firebug 控制台历史记录

debugging - 为什么 console.log 语句不再出现在我的 FireBug 控制台中?

javascript - 输入接受 ="image/png"在 Firefox 中不起作用

html - 在 http header 响应或 html 元标记中设置缓存控制有什么区别?