代码一:
var param = [1990,1991,1992];
for(var t in param){
alert(param[t]);
}
如果这样写确实可以循环出数组的每一个元素
代码二:
var str = "this is year 1990,1991,1992";
var rex = /\b\d{4}\b/g;
var param2 = str.match(rex);//正则匹配后 这个返回的也是数组啊 而且调用length属性的时候长度也是3。(param2.length=3)
for(var t in param2){
alert(param2[t]);
}
为什么在代码二使用for...in循环的时候会弹出alert框6次啊? 一样是循环数组啊
而且第一次alert里面显示的值是“this is year 1990,1991,1992”
第二次是“1990” 第三次是“1991” 第四次是“1992”
然后第五次是“23” 第六次是“27”.
这是怎么回事啊
1、for-in 如果是数组循环的是索引 如果是对象循环的是属性名
2、在chrome/firefox等浏览器将输出正确的结果
for(var t in param2){
alert(t); //t将是 0 1 2
}
3、在IE浏览器 还有input(原始串) index(当前匹配的位置) lastIndex(匹配的最后位置)属性
for(var t in param2){
alert(t); //t将是 input 0 1 2 index lastIndex
}
4、正确的方式是
for(var i=0;i<param2.length;i++){
alert(param2[i]);
}
正则不对吧?
应该是//吧?
后面你多加了个g是什么意思呢?
for in 在js里是用来遍历对象中的属性的,不要用它来遍历数组!遍历数组就用传统的for循环
因该是IE7 & IE8的bug,因为你正则带g了,带g和不带g表现是不同的,IE9下正常。