我有一个异步AJAX调用从数据库中获取菜单结构。然后回调运行一些代码以在DOM中生成菜单本身。在大多数情况下,这种方法很好,但在某些情况下我得到的结果不一致,我希望有人可以澄清。
菜单结构作为数组传入。数组的第7个元素是一个子数组,所以ThisMenu [6]是第一级项目,ThisMenu [6] [0]是第一个菜单项本身,而ThisMenu [6] [0] [6]是那个项目的孩子......等等。
如果我在Firebug中设置断点,我有时(不是所有的时间!)在Firebug中得到以下结果:
请注意,ThisMenu
的摘要显示为包含7个项目的数组 - 这与预期一致。在ThisMenu
的细节中,第6项是一个数组。但是ThisMenu[6]
的摘要显示了一个空数组,即使扩展的详细信息显示它有3个项目。
此外,ThisMenu[6][0]
会返回undefined
。将注意放在ThisMenu[6].length
上会返回0
。如果我执行没有断点的代码,它的行为就像我期望的那样,给定手表的当前状态 - 即。 ThisMenu[6].length == 0
。
只是为了进一步混淆这个问题,如果我在断点处暂停时强制我的手表重新评估(例如通过添加新手表),那么ThisMenu[6][0]
被定义并且一切都很好 - 但当然我一般情况下不能这样做。
这里发生了什么?为什么检查数组的属性与数组的实际状态不匹配?