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

Bry*_*eld 8 javascript cross-browser object

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

var x = {}
x['b'] = 1
x['a'] = 0
for(var i in x) {
    alert(i)
}
Run Code Online (Sandbox Code Playgroud)

Que*_*tin 7

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

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

我可以依赖以下代码提醒b吗?

不.规范说没有订单.


edw*_*win 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])
}
Run Code Online (Sandbox Code Playgroud)

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

  • 如果OP想知道密钥,那么它实际上是alert(i)。+1 链接 (4认同)