Em Javascript, sabemos que passar um array como parâmetro real para uma função é passado por referência, mas se essa referência for substituída nesta função, qual será o resultado? Por favor, veja o código abaixo:
+ Expanda o código para visualizar o código-fonte e imprimir?········10········20········30·········40 ······ ··50········60·········70·········80·········90· ········100·· ·····110·······120·······130·······140·······150
01.var ArrayVelho = [1, 2, 3];
02.
03.função modificarArray1(oldArray) {
04.
oldArray[0] = 'test1' //É possível alterar um elemento do array
05.
print(oldArray + 'em modificarArray1');
06.}
07.
08.modifyArray1(oldArray);
09.print(oldArray + 'out modificarArray1');
10.
11.print('==========================================');
12.
13.oldArray = [1, 2, 3]; //Restaura a matriz
14.
15.função modificarArray2(oldArray) {
16.
var novoArray = ['a', 'b', 'c'];
17.
oldArray[0] = 'test2'; //As alterações nos elementos do array são válidas
18.
oldArray = newArray; //Sobrescreve a referência, ela será inválida quando sair do escopo da função
19.
print(oldArray + 'em modificarArray2');
20.}
vinte e um.
22.modifyArray2(oldArray);
23.print(oldArray + 'out modificarArray2');
Este código pode ser executado através do shell JavaScript. Minha saída é:
+ Expanda o código para visualizar o código fonte para imprimir?········10·········20········30···· ····40 ·········50········60········70········80······ ···90····· ···100·······110·······120·······130········140···· ···150
1.test1,2,3 em modificarArray1
2.test1,2,3 fora modificarArray1
3.=========================================
4.a,b,c em modificarArray2
5.test2,2,3 fora modificarArray2
Isso ilustra o fato de que se você substituir diretamente a referência do parâmetro real em uma função, ela será válida dentro da função, mas se tornará inválida fora do escopo da função.