<script language=javascript>
   var aryA=new Array(3,4,7,9,2);     
   var aryB=aryA;
    aryB.splice(3,1);    
    document.write(aryA);
</script>
为什么原来的数组aryA也改变了呢?我期望的是aryA不变,但得到一个改变了的aryB

解决方案 »

  1.   


    var aryB=aryA;相当与把aryA的一个引用也指向了aryB,A改变了会影响B的。这样直接把A赋给B,在B中改变都会影响到A的。用delete方法也是,只能通过重新创建一个Array,然后把A里面想要的值赋给创建的
      

  2.   

    你把索引指向arrayA了当然会改变了ARRAY可是对象啊.
      

  3.   

    var aryA=new Array(3,4,7,9,2);
    var aryB=aryA.slice(0,arr.length);
    aryB.splice(3,1);
    document.write(aryA);这样试试
      

  4.   

    因为这是一个引用,aryA 与 aryB 都是指向同一个数组,无论你对 aryA 或者 aryB 进行操作,都会改变这个数组。如果你想aryB 独立于 aryA ,可以将aryA复制一份,再赋值给aryB。
    例如:
    var aryA=new Array(3,4,7,9,2);    
    var aryB=aryA.concat(); 或者 var aryB=aryA.slice(0);
    aryB.splice(3,1); 
    document.write(aryA);
      

  5.   

    aryB=aryA
    两个引用相同,当然会受影响,赋值为一个copy就可以了。