我在下面的代码中设置一个断点,它表示“断点”。还为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执行时没有错误。一个额外的strangness:为“self”添加一个监视表达式不会显示我期望的自我对象,只有一个属性“put”,而是“window”对象。
知道到底发生了什么事吗?
答案 0 :(得分:1)
可能self
正在由Firebug解决,也可能由Firefox在全局范围内解析为当前窗口。如果您选择“自我”以外的其他名称,您的代码应该让每个人都满意。
答案 1 :(得分:1)
我认为这是一个firefox错误。如果设置断点 var dataStore = []; 然后继续,当在put()中击中断点时。你得到一个闭包范围(在Firebug 1.6中)。该范围有dataStore和self。我认为Firefox正在优化封闭范围,可能因为代码无意义:没有办法访问dataStore。
最终将出现一个完整的测试用例 http://getfirebug.com/tests/script/stackoverflow/dataStoreIsNotDefined.html