时间问题(?) - Javascript数组显示为空,Firebug显示不一致的结果

时间:2013-03-08 04:08:43

标签: javascript arrays firebug

我有一个异步AJAX调用从数据库中获取菜单结构。然后回调运行一些代码以在DOM中生成菜单本身。在大多数情况下,这种方法很好,但在某些情况下我得到的结果不一致,我希望有人可以澄清。

菜单结构作为数组传入。数组的第7个元素是一个子数组,所以ThisMenu [6]是第一级项目,ThisMenu [6] [0]是第一个菜单项本身,而ThisMenu [6] [0] [6]是那个项目的孩子......等等。

如果我在Firebug中设置断点,我有时(不是所有的时间!)在Firebug中得到以下结果:

Argh!

请注意,ThisMenu的摘要显示为包含7个项目的数组 - 这与预期一致。在ThisMenu的细节中,第6项是一个数组。但是ThisMenu[6]的摘要显示了一个空数组,即使扩展的详细信息显示它有3个项目。

此外,ThisMenu[6][0]会返回undefined。将注意放在ThisMenu[6].length上会返回0。如果我执行没有断点的代码,它的行为就像我期望的那样,给定手表的当前状态 - 即。 ThisMenu[6].length == 0

只是为了进一步混淆这个问题,如果我在断点处暂停时强制我的手表重新评估(例如通过添加新手表),那么ThisMenu[6][0]被定义并且一切都很好 - 但当然我一般情况下不能这样做。

这里发生了什么?为什么检查数组的属性与数组的实际状态不匹配?

0 个答案:

没有答案