Javascript passando arrays para funções por valor, deixando a matriz original inalterada

Eu li muitas respostas aqui relativas a 'por valor' e 'por referência' passando para o envio de matrizes para funções javascript. No entanto, estou com um problema ao enviar uma matriz para uma função e deixar a matriz original inalterada. Este exemplo ilustra o 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;

}

Não consigo entender porque qualquer coisa nesta função deve alterar o array original.

chamar essa função altera diretamente a matriz original se a chamada de função for atribuída a uma nova matriz:

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

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

Eu tentei usar .valueOf () para enviar o primitivo:

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

Eu até tentei quebrar o array down element por element e sub-element por sub-element e atribuir tudo a um novo array bidimensional e o array original ainda é modificado.

Também juntei os subelementos a uma string, os processei, dividi-os novamente em arrays e a matriz original ainda é modificada.

Por favor, alguém sabe como eu posso passar os valores da matriz para uma função e não ter a mudança da matriz passada?

questionAnswers(7)

yourAnswerToTheQuestion