给定对象定义:
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 是否指定这种级别的顺序保存?
无论哪种情况,它是可靠的吗?
不,Javascript规范明确地不要求任何特定的枚举顺序,根据定义是无序的。
参见ECMAScript规范的12.6.4节:
列举属性的机制和顺序…
不能保证属性会按照定义的顺序出现
有些浏览器会按照定义的顺序保留属性,有些则不会。
将JSON解析为Javascript对象以外的东西的JSON解析器可以保留源中的顺序,否则无法保证它。