我在语句中看到有关for ...的iteration order的问题,并警告该顺序不可信任。在内部如何对当前和访问的节点进行迭代和跟踪,并且在JavaScript引擎之间有何不同?

最佳答案

the MDN documentation for for...in (添加重点):



我确信内部细节在JavaScript引擎之间会有所不同,甚至在任何特定引擎的版本之间也可能会有所不同。我的猜测是,在许多引擎中,都是通过某种哈希表实现来完成的。由于哈希函数会随着哈希表的增长而对键进行重新排序,因此属性ab的相对顺序可以通过添加新的属性c来更改,而无需更改引擎或任何其他内容。

08-04 21:53