Javascript pasando matrices a funciones por valor, dejando la matriz original inalterada

He leído muchas respuestas aquí relacionadas con el paso 'por valor' y 'por referencia' para enviar matrices a funciones javascript. Sin embargo, estoy teniendo problemas para enviar una matriz a una función y dejar la matriz original sin alterar. Este ejemplo ilustra el problema:

function myFunction(someArray)
{
// any function that makes an array based on a passed array;
// someArray has two dimensions;
// I've tried copying the passed array to a new array like this (I've also used 'someArray' directly in the code);

funcArray = new Array();
funcArray = someArray;

var i = 0;

    for(i=0; i<funcArray.length; i++)
    {
    funcArray[i].reverse;
    }

return funcArray;

}

No puedo entender por qué cualquier cosa en esta función debería alterar la matriz original.

llamar a esta función cambia directamente la matriz original si la llamada de función se asigna a una nueva matriz:

myArray = [["A","B","C"],["D","E","F"],["G","H","I"]];
anotherArray = new Array();

anotherArray = myFunction(myArray);
// myArray gets modified!;

Intenté usar .valueOf () para enviar el primitivo:

anotherArray = myFunction(myArray.valueOf());
// myArray gets modified!;

Incluso he intentado dividir la matriz elemento por elemento y subelemento por subelemento y asignar todo a una nueva matriz bidimensional y la matriz original aún se modifica.

También he unido los subelementos a una cadena, los he procesado, los he dividido en matrices y la matriz original todavía se modifica.

Por favor, ¿alguien sabe cómo puedo pasar los valores de la matriz a una función y no puedo cambiar la matriz pasada?

Respuestas a la pregunta(7)

Su respuesta a la pregunta