6

给定一个对象定义:

var o = {x :1, y:2, z: 3, b: 4, a: 5, m: 6, X: 7};

在枚举时,Chrome似乎尊重定义属性的顺序:

for (var i in o) { console.log(i, o[i]); }

产量:

x 1
y 2
z 3
b 4
a 5
m 6
X 7

JavaScript 和/或 JSON 是否指定了此级别的订单保留?

无论哪种情况,它可靠吗?

4

2 回答 2

9

不,Javascript 规范明确不需要任何特定的枚举顺序,它们根据定义是无序的。

请参阅 ECMAScript 规范的第12.6.4节:

枚举属性的机制和顺序......没有指定。

于 2013-06-06T20:10:18.617 回答
1

无法保证属性将按照定义的顺序出现。

有些浏览器会按照定义的顺序保留属性,有些则不会。

将 JSON 解析为 Javascript 对象以外的其他内容的 JSON 解析器可以保留来自源的顺序,否则无法保证它。

于 2013-06-06T20:12:15.583 回答