<script type="text/javascript">
var x;
var mycars = new Array();
mycars[0] = "BMW";
mycars[1] = "MG";
mycars[2] = "荣威950";
for(x in mycars){
document.write(mycars[x] + "<br/>");
}
</script>
代码中的x在声明的时候取值为什么对输出没有影响,比如:var x =100;输出依然是
BMW
MG
荣威950
看错了,上面不算,sorry
普通数组使用索引遍历:
for (var i = 0; i < arr.length; i++) { console.log(arr[i]); }
字典数组采用下标遍历:
for (var x in arr) { console.log(arr[x]); }
for(var x in mycars)
相当于
for (var x=0;x<mycars.length;x++)
x只起到计数的作用,和mycars.length没有任何的影响
当for(x in mycars)的时候,x会被重新赋值,所以你在声明的时候赋值并不会影响到后面的循环,不过你在for(x in mycars){
x= 100;
}这个地方重新赋值,肯定就有影响了
for (x in mycars)中的mycars是个数组,意思是循环这个数组,每个元素赋值给x。请看js文档循环结构那章节。
for in对变量x重新赋值了为数组的下标了当然不在是100,x会变为数组下标最大值
for in对X重新赋值了,如果你讲x =100放到for 代码块里面肯定会有影响的
x 相当于数组的下标
for in 通常用来遍历一个对象 数组也是对象 所以有时候也可以用来遍历数组
for(var key in obj) 是以属性名遍历这个对象 key就相当于obj的属性名 而下标就是数组的属性 所以数组也可以用for in 来遍历
和for循环一样 都是在开始循环时 初始化(相当于声明一个变量) 所以和你在上面声明的变量是不一样的 也就不会影响循环
但一般不推荐使用for in来遍历数组
因为他是以属性名来遍历的 如果你给数组对象自定义了一个方法 在遍历时也会把比这个方法体给遍历出来、、这就不是我们想要的了