读书人

各浏览器中for in顺序的差别

发布时间: 2012-10-21 09:00:07 作者: rapoo

各浏览器中for in顺序的差异

如下

var obj = {  2:"2",  40:"40",  15:"15"};for (var k in obj) {console.log(k); };

?

?

?

IE6/7/8Firefox/Safari

?

var a = "123" for(var i in a){ alert(i+":"+a[i]) } 2 楼 zhouyrt 2011-03-30 友情提醒,貌似多了个逗号
quote]

已修改。谢谢 3 楼 diogin 2011-03-30 普通 hash dict 跟 ordered dict 是两种不同的数据结构,前者不维护 keyvalue 项的先后顺序,后者会维护。
4 楼 chensulong 2011-03-30 从CNBLOGS上抄过来的?。。。是同一个作者 5 楼 soni 2011-03-31 别考虑这个了,使用 for in的时候你就别指望能按照某些预想的顺序读取. 6 楼 _piggy_ 2011-03-31 个人感觉一个是hashmap一个是linkedhashmap 7 楼 EldonReturn 2011-03-31 javascript specification 没规定这个。所以嘛,顺序就别研究了。 8 楼 fantasybei 2011-03-31 我之前看mootools源码的时候,好像里面有一段代码就是依赖这个的,但是我在irc里问了一个牛人,他说现在浏览器基本都是按定义的时候来遍历的 9 楼 leves 2011-04-01 hash 本来就是无序的,不同的hash实现,顺序可能存在不同 10 楼 ahopedog2 2011-04-02 Object的键值好像不简单是Hash吧 11 楼 cuixiping 2011-04-03 不应该让你的代码依赖for...in遍历的顺序。
因为键值对不应该顺序敏感:
x={a:1,b:2} 和 x={b:2,a:1} 应该算是等价的表示。

微软的JScript手册,讲到for...in的时候也说:
当在一个对象上迭代时,没有办法决定或控制把对象的成员赋给variable的次序。

读书人网 >Web前端

热点推荐