javascript中for in用法

<html>
<body>
<script type="text/javascript">
var x=2;
var mycars = new Array()
mycars[0] = "Saab"
mycars[1] = "Volvo"
mycars[2] = "BMW"
mycars[3] = "BMWa"
mycars[4] = "BMWb"
mycars[5] = "BMWc"

for (x in mycars)
{
document.write(mycars[x] + "<br />")
}
</script>
</body>
</html>

这个函数中为什么无论怎么更改x的值显示结果都是将mycars顺序输出?
还有即使x未被赋值却还是能够将mycars顺序输出是为什么?
for in 到底是什么个运行方法啊,高手们求解!!!!!!

1:解析:
for...in 语句
对应于一个对象的每个,或一个数组的每个元素,执行一个或多个语句。
for (variable in [object | array])
2:参数
variable
必选项。一个变量,它可以是 object 的任一属性或 array 的任一元素。
object, array
可选项。要在其上遍历的对象或数组。
3:说明
在循环的每次迭代前,variable 被赋予 object 的下一个属性或 array 的下一个元素。然后可以在循环内的任一语句中使用它,就好像正在使用 object 的该属性或 array 的该元素一样。
当在一个对象上迭代时,没有办法决定或控制把对象的成员赋给 variable 的次序。在数组内将按元素的次序执行迭代,也就是,0、1、2、......
4:示例
document.write("<font color='red'>for in用法举例--数组</font><br>");
var obj=["zhao","liang","zl","an"];
for(var j in obj)
{
document.write("索引"+j+"、"+obj[j]+"<br>");
}

document.write("<font color='red'>for in用法举例--对象</font><br>");
var obj2={"name":"zl","age":"24","sex":"男"};
for(var j in obj2)
{
document.write("属性名:"+j+"------》值:"+obj2[j]+"<br>");
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-31
x in mycars 就代表x是 mycars数组的下标了 ,你更改x的值除非是在for里面 输出之前改变x的值,然后输出的值才会改变,在外面定义的x在for里面 相当于 已经被重新赋值了,如果你之前没有定义过x,也就是说 你将 var x = 2;这句话注释,程序还是可以运行,在for运行之前,并且程序会自动的声明了一个x,x的值就是 mycars的下标追问

那我这个x的值在经历for in之后数值是之前赋值的var x=2;还是for in 中最后运行到得x=5呢?

追答

你这句话我有点看不懂,但是你应该是问x的值,x的值已经被for In 给改变了。

第2个回答  2012-05-30
for in 一般用于你不知道该数组或者JSON中包含哪些元素,而进行遍历。
例如有一个元素未知的JSON对象:
var clnums = {a:1,b:2,...};
for(key in clnums){
document.write(clnums[key]);
}本回答被网友采纳
第3个回答  2012-06-01
for in 就是将数组中的数据一个一个的付给x,此时x是新的变量
如果不想顺序输出 最好还是用for(var i=x;i<mycars.length;i++)
第4个回答  2012-06-01
for 循环的x 被循环机制重新赋值了,每循环一次付一次值
相似回答