论坛首页 Web前端技术论坛

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

浏览 5639 次
该帖已经被评为隐藏帖
作者 正文
   发表时间: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。


   发表时间:2011-03-29   最后修改:2011-03-29
友情提醒,貌似多了个逗号

另外之前从小美那里了解到。除ie外,其他浏览器可以枚举字符串
var a = "123" 
for(var i in a){  
	alert(i+":"+a[i])  
}
0 请登录后投票
   发表时间:2011-03-30  
友情提醒,貌似多了个逗号
quote]

已修改。谢谢
0 请登录后投票
   发表时间:2011-03-30  
普通 hash dict 跟 ordered dict 是两种不同的数据结构,前者不维护 keyvalue 项的先后顺序,后者会维护。
0 请登录后投票
   发表时间:2011-03-30   最后修改:2011-03-30
从CNBLOGS上抄过来的?。。。是同一个作者囧
0 请登录后投票
   发表时间:2011-03-31  
别考虑这个了,使用 for in的时候你就别指望能按照某些预想的顺序读取.
0 请登录后投票
   发表时间:2011-03-31  
个人感觉一个是hashmap一个是linkedhashmap
0 请登录后投票
   发表时间:2011-03-31  
javascript specification 没规定这个。所以嘛,顺序就别研究了。
0 请登录后投票
   发表时间:2011-03-31  
我之前看mootools源码的时候,好像里面有一段代码就是依赖这个的,但是我在irc里问了一个牛人,他说现在浏览器基本都是按定义的时候来遍历的
0 请登录后投票
   发表时间:2011-04-01  
hash 本来就是无序的,不同的hash实现,顺序可能存在不同
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics