直接console.log (res);
是这样的
若是console.log(res[4]);
是这样的
但是很诡异的是若是console.log(res[4].Ox_min)就会输出10000,明明上图也不是10000,为什么会这样。
我在程序刚开始的时候写了一个初始化的函数,并直接调用了仅仅一次,那次把这个值设为10000的,同时其他的所有参数,都跟初始化的时候一模一样。求大神指教,到底为什么,该怎么解决。

解决方案 »

  1.   

    js数组是引用传递,你调用一次就改变了数组对象,所以要用concat方法复制一份进行更改,才不会改到原数组
      

  2.   

    console.log出对象时, 只是写出这个对象引用, 当你展开时,显示的当前的值
    鼠标移到"兰色的i", 有这警告提示.
      

  3.   

    数组和对象都是引用类型 ,
    var  a = [1,2];
    var b = a;
    a.push(3);
    console.log(b);[1,2,3]
    也就是赋值并没有复制数组,而是引用同一个数组.对象也是一样. 
    那么就是如何深度复制数组和对象的问题了.最常用的方法就是遍历数组.一一赋值,如果是引用类型就是递归遍历.
    字符串也是引用类型,但是字符串是不可修改的,每次修改都是新建新的字符串,所以没有这个问题.
    不理解的,可以说明
      

  4.   

    你后续修改过值了,chrome控制台你最后展开看到的是最后对象的值,不是当时打印的值。你要看即时值,打印转为json字符串console.log(JSON.stringify(res))Web开发学习资料推荐
    jquery attr prop 区别
    javascript客户端图片预览
      

  5.   

    好吧,实际上,是处理json文件时异步加载所致,console.log也是一个异步加载的函数,会输出的是最后的数组的值,而不是当前的值,但是由于前面json的数据没有加载完成就被我拿去调用来更新数组,导致数组里根本没有变化,所以输出之后还是初始值,把更新函数写在ajax的回调函数里就可以了。