js for in 在各浏览器差异
来源:互联网 发布:midas软件破解版下载 编辑:程序博客网 时间:2024/05/16 11:29
js for in 在各浏览器差异
var obj = {
2 2:"2",
3 40:"40",
4 15:"15",
5 };
6 for (var k in obj) {
7 console.log(k);
8 };
ie6/7/8/firefox/safari
2
40
15
ie9/chrome10/opera11
2
15
40
即ie9/chrome10/opera11中不是按定义时的顺序输出的。for in规则参考ecmascript5 12.6.4。
引用the mechanics and order of enumerating the properties (step 6.a in the first algorithm, step 7.a in the second) is not specified
v5已经不再规定for..in的顺序了,所以chrome咋整都没问题
chrome的算法如下:
1、对所有key计算parsefloat的结果
2、将parsefloat为0或正整数的提取出来,从小到大输出
3、将剩下的,按定义顺序输出
ie9我没自己看,好像记得有人说(好像就是教主同志)ie9的顺序和chrome是一样的
另外ie6-8的一个问题:
var o = {};
o['a'] = 1;
o['b'] = 2;
o['c'] = 3;
delete o['a'];
o['a'] = 4;
for (var key in o) {
console.log(key);
}
ie是a-b-c,其他浏览器是b-c-a
如果说一个object里有一个keytable和一个valuetable的话,ie对delete的理解是,把key对应的valuetable里的项砍掉,但keytable保留着,大概就是做了个记号[[deleted]],因此导致再次定义这个key的时候,顺序保持了原来的
@gray zhang
ie9果然和chrome一样。已修改,谢谢。
有两点:
1,所说chrome算法貌似不对,示例
var obj = {
"1a":"1a",
2:"2",
40:"40",
15:"15"
};
for (var k in obj) {
console.log(k);
};
chrome下输出 2,15,40,1a。按你所列步骤应该是 1,2,15,40
2,ie6/7/8/9中以下代码都输出a,b,c
var o = {};
o['a'] = 1;
o['b'] = 2;
o['c'] = 3;
delete o['a'];
o['a'] = 4;
for (var key in o) {
console.log(key);
var obj = {
2 2:"2",
3 40:"40",
4 15:"15",
5 };
6 for (var k in obj) {
7 console.log(k);
8 };
ie6/7/8/firefox/safari
2
40
15
ie9/chrome10/opera11
2
15
40
即ie9/chrome10/opera11中不是按定义时的顺序输出的。for in规则参考ecmascript5 12.6.4。
引用the mechanics and order of enumerating the properties (step 6.a in the first algorithm, step 7.a in the second) is not specified
v5已经不再规定for..in的顺序了,所以chrome咋整都没问题
chrome的算法如下:
1、对所有key计算parsefloat的结果
2、将parsefloat为0或正整数的提取出来,从小到大输出
3、将剩下的,按定义顺序输出
ie9我没自己看,好像记得有人说(好像就是教主同志)ie9的顺序和chrome是一样的
另外ie6-8的一个问题:
var o = {};
o['a'] = 1;
o['b'] = 2;
o['c'] = 3;
delete o['a'];
o['a'] = 4;
for (var key in o) {
console.log(key);
}
ie是a-b-c,其他浏览器是b-c-a
如果说一个object里有一个keytable和一个valuetable的话,ie对delete的理解是,把key对应的valuetable里的项砍掉,但keytable保留着,大概就是做了个记号[[deleted]],因此导致再次定义这个key的时候,顺序保持了原来的
@gray zhang
ie9果然和chrome一样。已修改,谢谢。
有两点:
1,所说chrome算法貌似不对,示例
var obj = {
"1a":"1a",
2:"2",
40:"40",
15:"15"
};
for (var k in obj) {
console.log(k);
};
chrome下输出 2,15,40,1a。按你所列步骤应该是 1,2,15,40
2,ie6/7/8/9中以下代码都输出a,b,c
var o = {};
o['a'] = 1;
o['b'] = 2;
o['c'] = 3;
delete o['a'];
o['a'] = 4;
for (var key in o) {
console.log(key);
}
JS先驱者都告诫过我们不要对数组对象使用for in语句进行遍历。在遍历数组时,尽量避免使用for in ,而是采用原生的for方法。在遍历对象时,而且对顺序要求不高,可以for in 。
- js for in 在各浏览器差异
- 各浏览器 for-in 遍历对象属性的顺序差异
- js 在浏览器中的差异
- js for in浏览器兼容问题
- js:for in 语句各浏览器有区别
- 列表在各浏览器中的表现差异
- js在火狐和IE浏览器的差异
- 各浏览器对css,html,js支持的差异
- 在js中for in的用法
- 在js中for in的用法
- 在js中for in的用法
- javascript数组之in操作符在各个浏览器解析的差异
- 捕捉childNodes在不同浏览器中的差异
- fieldset在不同浏览器中的差异
- sessionid在各个浏览器内的差异
- 在js中for in的用法
- for in 在js数组和对象上使用
- 浏览器差异
- ~/.bash_profile在某些情况下没有执行
- Android推荐学习路线图
- How to save the DDR SDRAM data upon reset
- JavaScript中的NaN、Infinity、null和undefined
- struts2开发环境的搭建与第一个项目的创建
- js for in 在各浏览器差异
- java jar运行读取配置文件config
- Visual Studio2010 配置C/C++项目属性
- Red Hat Linux创建普通用户&&普通用户与超级用户root切换
- 说说Android桌面(Launcher应用)背后的故事1
- 深入入门正则表达式(java) - 1 - 入门基础
- lroundf() and sliders
- 限制root用户远程登录方法汇集
- 解决 org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected