问题是:Chrome 会自动对对象的属性进行排序。
如果我有一个对象,例如:
var obj = {4: "first", 2: "second", 1: "third"};
然后当我下一步做时:
for(var i in obj) {
console.debug(obj[i]);
}
我看下一个:
third
second
first
但期望:
first
second
third
问题是:Chrome 会自动对对象的属性进行排序。
如果我有一个对象,例如:
var obj = {4: "first", 2: "second", 1: "third"};
然后当我下一步做时:
for(var i in obj) {
console.debug(obj[i]);
}
我看下一个:
third
second
first
但期望:
first
second
third
永远不要依赖属性的顺序。它们是无序的,并且没有定义应以何种顺序枚举属性的规范。
Chrome 使用数字键对属性进行数字排序,而其他浏览器则按插入顺序枚举它们。它依赖于实现。