javascript中for in用法

<html><body><scripttype="text/javascript">varx=2;varmycars=newArray()mycars[0]="Saab"... <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 到底是什么个运行方法啊,高手们求解!!!!!!
展开
 我来答
青鸟中关村专家
2015-06-03 · 知道合伙人软件行家
青鸟中关村专家
知道合伙人软件行家
采纳数:1734 获赞数:8440
就职于北大青鸟中关村,自2004年踏入北大青鸟这个行业,已经有11年工作经验和8年的培训经验,寓教于乐

向TA提问 私信TA
展开全部
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>");
}
我的天and神啊
2012-05-31 · TA获得超过113个赞
知道答主
回答量:54
采纳率:0%
帮助的人:37.5万
展开全部
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 给改变了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
美丽的泄后
2012-05-30 · TA获得超过174个赞
知道小有建树答主
回答量:98
采纳率:0%
帮助的人:98.6万
展开全部
for in 一般用于你不知道该数组或者JSON中包含哪些元素,而进行遍历。
例如有一个元素未知的JSON对象:
var clnums = {a:1,b:2,...};
for(key in clnums){
document.write(clnums[key]);
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
200921240114
2012-06-01
知道答主
回答量:5
采纳率:0%
帮助的人:7871
展开全部
for in 就是将数组中的数据一个一个的付给x,此时x是新的变量
如果不想顺序输出 最好还是用for(var i=x;i<mycars.length;i++)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ruian891015
2012-06-01
知道答主
回答量:18
采纳率:0%
帮助的人:7.8万
展开全部
for 循环的x 被循环机制重新赋值了,每循环一次付一次值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式