是否有任何主流浏览器不保留JavaScript对象中的插入顺序?

是否有任何主流浏览器不保留JavaScript对象中的插入顺序?,javascript,object,cross-browser,Javascript,Object,Cross Browser,我能否依靠以下代码在a之前发出警报b var x = {} x['b'] = 1 x['a'] = 0 for(var i in x) { alert(i) } 是否有任何主流浏览器不保留JavaScript对象中的插入顺序 直到最近,至少有一个主要的浏览器这样做了(我认为V8引擎没有保持秩序) 我可以依靠以下代码在a之前警告b吗 没有。说明书上说没有订单 对于Google Chrome中使用的V8 JavaScript引擎,也进行了类似的讨论: 最好不要依赖未记录的特性。如果你用数

我能否依靠以下代码在
a
之前发出警报
b

var x = {}
x['b'] = 1
x['a'] = 0
for(var i in x) {
    alert(i)
}
是否有任何主流浏览器不保留JavaScript对象中的插入顺序

直到最近,至少有一个主要的浏览器这样做了(我认为V8引擎没有保持秩序)

我可以依靠以下代码在a之前警告b吗


没有。说明书上说没有订单

对于Google Chrome中使用的V8 JavaScript引擎,也进行了类似的讨论:

最好不要依赖未记录的特性。如果你用数字作为键,肯定会出错

例如,在某些浏览器中这会中断:

var x = {}
x['b'] = 1
x['2'] = 20
x['a'] = 0
x['1'] = 10
for(var i in x) {
    alert(x[i])
}

顺便说一句,这是
alert(x[i])

我不知道,但我的直觉告诉我你不应该这么做。如果您需要依赖于顺序,请使用数字索引。如果OP想要知道键,那么它实际上是警报(i)+1对于linkAh,OP刚刚更新了他/她的代码。请注意,Carakan(在Opera 10.50+中)和Chakra(IE9+)使用相同的顺序(unit32以数字顺序命名属性,然后以插入顺序命名所有其他属性)。实际上,我想知道这两者。我更喜欢保留顺序,所以我使用更少的代码,但我会避免这种方法。