代码如下var astrPaymentJsons = maobjCurrent[2].slice(0);
////////////////////////①///////////////////////////
if (!VerifyReceiptAmount()) {
    return false;
}
////////////////////////②///////////////////////////于是在①的时候和②的时候astrPaymentJsons中的值不一样了,求解!!!!注:  maobjCurrent[2]为全局变量
     VerifyReceiptAmount方法中改变了maobjCurrent[2]的值

解决方案 »

  1.   

    怎么可能呢。。除非你在VerifyReceiptAmount()中修改了astrPaymentJsons的值,不然的话就不会改变。
    var ar1 = [1,2,3];
    var ar2 = ar1.slice(0);
    ar1[0] = 'A';
    alert(ar2); //1,2,3
      

  2.   


    是啊  我也感觉很奇怪的,但是上面的astrPaymentJsons是我新定义的啊   我改成“AAABB”这样的都不行    var marray1 = new Array("1", "2", "3");    function clone1() {        var array2 = marray1.slice(0);
            alert(array2);
            if (!VerifyReceiptAmount()) {
                return false;
            }
            alert(array2);
        }    function VerifyReceiptAmount() {
            marray1[0] = "2";
            return true;
        }
    上面这个是我测试用的   也是成功的,  但是代码里的就是不行.....
      

  3.   

    可以肯定是代码的问题,用Firebug进行断点调试吧,先找到是哪一行代码修改了astrPaymentJsons数组的值。
      

  4.   

    我查询了页面上的astrPaymentJsons   只留下了var astrPaymentJsons = maobjCurrent[2].slice(0);
    然后在上面说的///①////,////②////的地方写了alert(astrPaymentJsons[0]);
    调试的时候经过VerifyReceiptAmount方法值就被改变了
      

  5.   


    maobjCurrent[2][intIndex]["ReceiptAmount"] = (floatOrderTotal - floatPartAmountPaid).toString() ;
    return true;监视到这一步执行后
    astrPaymentJsons[1].ReceiptAmount就被改了.....  哪位高手知道  求解啊
      

  6.   

    原来原始数据是个JSON数组啊。。那就不能使用普通数组的slice()方法来复制了,因为数组保存的是对对象的引用。自己google一下:JSON 深度复制
      

  7.   

    感谢T5500的帮助
    下面贴出代码function clone(jsonObj) {  
          var buf;  
          if (jsonObj instanceof Array) {  
            buf = [];  
            var i = jsonObj.length;  
            while (i--) {  
              buf[i] = clone(jsonObj[i]);  
            }  
            return buf;  
          }else  if (jsonObj instanceof Object){  
            buf = {};  
            for ( var k in jsonObj) {  
              buf[k] = clone(jsonObj[k]);  
            }  
            return buf;  
          }else {  
            return jsonObj;  
          }  
        }