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

时间:2011-05-26 13:58:55

标签: javascript object cross-browser

我可以在b之前依赖以下代码提醒a吗?

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

2 个答案:

答案 0 :(得分:7)

  

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

至少有一个主流浏览器直到最近(我认为V8引擎没有保留顺序)。

  

我可以依赖以下代码警告b吗?

没有。规范说没有订单。

答案 1 :(得分:4)

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

http://code.google.com/p/v8/issues/detail?id=164

最好不要依赖未记录的功能。你使用数字作为键,肯定会出错。

例如,在某些浏览器中会出现这种情况:

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

BTW它是alert(x[i])