锁定老帖子 主题:各浏览器中for in顺序的差异
该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2011-03-29
最后修改:2011-03-29
如下
var obj = { 2:"2", 40:"40", 15:"15" }; for (var k in obj) { console.log(k); };
IE6/7/8Firefox/Safari
2
40
15
IE9/Chrome10/Opera11
2
15
40
即IE9/Chrome10/Opera11中不是按定义时的顺序输出的。for in规则参考ECMAScript5 12.6.4。
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-03-29
最后修改:2011-03-29
友情提醒,貌似多了个逗号
另外之前从小美那里了解到。除ie外,其他浏览器可以枚举字符串 var a = "123" for(var i in a){ alert(i+":"+a[i]) } |
|
返回顶楼 | |
发表时间:2011-03-30
友情提醒,貌似多了个逗号
quote] 已修改。谢谢 |
|
返回顶楼 | |
发表时间:2011-03-30
普通 hash dict 跟 ordered dict 是两种不同的数据结构,前者不维护 keyvalue 项的先后顺序,后者会维护。
|
|
返回顶楼 | |
发表时间:2011-03-30
最后修改:2011-03-30
从CNBLOGS上抄过来的?。。。是同一个作者囧
|
|
返回顶楼 | |
发表时间:2011-03-31
别考虑这个了,使用 for in的时候你就别指望能按照某些预想的顺序读取.
|
|
返回顶楼 | |
发表时间:2011-03-31
个人感觉一个是hashmap一个是linkedhashmap
|
|
返回顶楼 | |
发表时间:2011-03-31
javascript specification 没规定这个。所以嘛,顺序就别研究了。
|
|
返回顶楼 | |
发表时间:2011-03-31
我之前看mootools源码的时候,好像里面有一段代码就是依赖这个的,但是我在irc里问了一个牛人,他说现在浏览器基本都是按定义的时候来遍历的
|
|
返回顶楼 | |
发表时间:2011-04-01
hash 本来就是无序的,不同的hash实现,顺序可能存在不同
|
|
返回顶楼 | |