Chrome 的数组遍历顺序问题

昨天发现 Chrome 在遍历一个键名为数字形式的字符串的对象时,并不是像其他浏览器一样按定义的顺序。

  
var hash = {‘3′:3,’1′:1,’5′:5,’2′:2,’4’:4};
var s = ”;
for (var k in hash) {
s+= k+’:’+hash[k]+”n”;
}
alert(s);
  

比如这个代码,在其他浏览器里都是31524,在 Chrome 里却是 12345 。当然 Chrome 也不是就把它们排序了,试试其他的数字,比如 {‘7553′:1,’5441′:2,’77335′:3,’222′:4,’1114’:5} 。

去看了一下 ECMAScript 草案,倒也没规定对象属性的遍历的顺序什么的。所以在遍历对象的时候最好不要依赖于属性的特定顺序。

 

 

4 thoughts on “Chrome 的数组遍历顺序问题

  1. Jovi August 10, 2009 / 4:52 pm

    初略翻了一下,应该是一位技术牛人,呵呵
    虽然我也是做技术的,不过还比较浅

  2. billpeng May 25, 2009 / 10:21 am

    交换一下链接吧!我的www.billpeng.cn/blog 姓名:billpeng

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s