我在下面显示“断点”的代码中设置了一个断点。还为 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
关于javascript - firebug 错误地告诉我我的变量没有定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3302399/