【发布时间】:2015-11-04 02:55:56
【问题描述】:
众所周知,ECMA 标准不保证特定的迭代顺序,但我对实际的迭代顺序不感兴趣。我需要知道的是:如果在同一会话期间执行多次,则 for-in 循环至少保证相同的迭代顺序,前提是显然在随后的 for-in 执行之间没有添加或删除迭代对象的属性?我可以猜测没有理由不发生这种情况,但我想找到一些参考。
【问题讨论】:
-
我自己不能肯定地说,但除非使用网络工作者,我会说在检查对象上的键时可能存在一些缓存机制。看到这是“单线程”(同样,这只是高级思考),如果您在第一轮之后立即调用相同的 for..in 循环,您将按顺序获得相同的键集第一个。如果出于某种原因您想保证这一点,您可以遍历所有键,将它们存储在一个数组中,然后遍历数组并通过
obj[crntKey]访问
标签: javascript ecmascript-5 for-in-loop