Javascript数组在函数之后更改而不涉及

时间:2014-07-21 22:06:23

标签: javascript arrays function

我很困惑。我有一个数组myArray = [2, 2, 2, 1, 1]但不知道,它采用了数组testArray的值。

if(count == 5) {
    alert("beginn" + myArray[2]);
    var testArray=testFunction(myArray);
    alert("middle" + myArray[2]);
    var testCount=countNumber(testArray);
    if (testCount = 3){
        count = 4;
    }
}

这是功能:

function testFunction(testArray){
    var minimum=Math.min.apply(Math,testArray);
    var i=0;
    var position=-1;
    for(i;i<testArray.length;i++){
        if(position==-1){
            if(minimum==testArray[i]){
                position=i;
            }
        }
    }
    i = 0;
    for(i; i < testArray.length; i++){
        if(i != position){
            testArray[i] = testArray[i] - 1;
        }
    }

    return testArray;
}

所以在函数testArray正确[1,1,1,1,0]之后,但不幸的是myArray也不知道为什么。

1 个答案:

答案 0 :(得分:3)

在JavaScript中,当您将数组对象分配给另一个变量时,您基本上是指定一个指向原始数组对象的指针。这意味着如果你这样做:

var myArray = [1,2,3,4];
var testArray = myArray;

那么对testArray所做的任何更改也将对myArray进行,因为它们实际上是同一个数组!

要防止myArray发生变化,您需要传递数组的副本:

var myCopy = myArray.slice(0);
var testArray=testFunction(myCopy);