我在语句中看到有关for ...的iteration order的问题,并警告该顺序不可信任。在内部如何对当前和访问的节点进行迭代和跟踪,并且在JavaScript引擎之间有何不同?
最佳答案
从the MDN documentation for for...in
(添加重点):
我确信内部细节在JavaScript引擎之间会有所不同,甚至在任何特定引擎的版本之间也可能会有所不同。我的猜测是,在许多引擎中,都是通过某种哈希表实现来完成的。由于哈希函数会随着哈希表的增长而对键进行重新排序,因此属性a
和b
的相对顺序可以通过添加新的属性c
来更改,而无需更改引擎或任何其他内容。