var o = {x:1, y:2, z:3}; 
var a = new Array(  ); 
var i = 0; 
for(a[i++] in o) 
var m=a[i++];//此时,m=a[3]=null
alert(m); //弹出 undefined 
for(m in o) 
alert(i); //弹出6、6、6,为什么
alert(m)//弹出 z请高手指点

解决方案 »

  1.   

    你循环没加{}
    所以只循环了紧接for的一句.
    所以始终是第二句运行后的终值.
      

  2.   

    for(a[i++] in o) 
    var m=a[i++];//此时,m=a[3]=null for里面的a[i++]一运行,i值变成1
    var m=a[i++];这句一执行,i变成23个循环下来,i就变成了6.去理解一下i++;自增,应该怎么用!
      

  3.   


    var o = {x:1, y:2, z:3}; 
    var a = new Array(); 
    var i = 0; 
    for(a[i] in o)
    {
    var m=a[i];//此时,m=a[3]=null 
    i++;
    alert(m); //弹出 undefined 
    alert("i自增为:"+i);
    } for(m in o) 
    {
    alert(i); //i经过3次自增后,变为3
    alert(m)//弹出 z 
    }
      

  4.   

    只可以告诉你.m循环的是o的属性.所以不可能是null
      

  5.   

    m循环的是o的属性,这我知道。可在本例中,已经 var m=a[i++] ,那么  for (m in o) 中的 m 与 变量声明中的 m 有关吗?