var json = {a:'1',b:'2'};
alert(json.a);//输出1
alert(json[0]);//当然是undenfied
for(var i in json){
  alert(json[i]);  //为什么这里循环输出了?  上面这种格式输出不是undenfied吗?
}

解决方案 »

  1.   

    for(var i in json){
      alert(json[i]);  //为什么这里循环输出了?  上面这种格式输出不是undenfied吗?
    }
    这里的i是a或b 
    for in 循环 对象属性
      

  2.   

    你可以这样写
    for(var i in json){
      alert(i+"----"+json[i]);  //会输出a----1    b----2   
    }
      

  3.   

    <script>
    var l1={
      0:1,
      1:1
    }
    var l2=[
      1,1
    ]
    alert( l1[0] )
    alert( l2[0] )
    alert( l1[1] )
    alert( l2[1] )
    //结果全是1
    </script>
      

  4.   

    也可以 var  jsondata=eval();
    for(){}
      

  5.   

    javascript的内部实现机制就是用数组实现的
      

  6.   


    //var json = {a:'1',b:'2'};
    var json = [{a:'1',b:'2'}, 2,3]//这样就不一样了
    alert(json.a);//输出1
    alert(json[0]);//当然是undenfied
    for(var i in json){
      alert(json[i] + ";i:" + i);  //为什么这里循环输出了?  上面这种格式输出不是undenfied吗?
    //lz看看这里的输出的i是什么,是它的属性a,b;并不是0,1,1;如果是数组就是0,1下标了
    }
      

  7.   

    json[i]是json对象的属性,而上面的json[0]楼主当成是数组了.json其实是数组与对象的组合