En Javascript, sabemos que pasar una matriz como parámetro real a una función se pasa por referencia, pero si esta referencia se sobrescribe en esta función, ¿cuál será el resultado? Por favor mire el código a continuación:
+ ¿Ampliar el código para ver el código fuente e imprimir?·········10········20········30·········40 ······ ··50········60·········70·········80·········90· ········100·· ·····110·······120·······130·······140·······150
01.var oldArray = [1, 2, 3];
02.
03.función modificarArray1 (antiguoArray) {
04.
oldArray[0] = 'test1'; //Es posible cambiar un elemento del array
05.
print(oldArray + 'en modificarArray1');
06.}
07.
08.modifyArray1 (oldArray);
09.print(oldArray + 'fuera modificarArray1');
10.
11.print('===========================================');
12.
13.oldArray = [1, 2, 3]; //Restaurar la matriz
14.
15.función modificarArray2 (antiguoArray) {
16.
var nuevaArray = ['a', 'b', 'c'];
17.
oldArray[0] = 'test2'; //Los cambios en los elementos de la matriz son válidos
18.
oldArray = newArray; //Sobrescribe la referencia, no será válida una vez que salga del alcance de la función.
19.
print(oldArray + 'en modificarArray2');
20.}
veintiuno.
22.modifyArray2 (oldArray);
23.print(oldArray + 'fuera modificarArray2');
Este código se puede ejecutar a través del shell de JavaScript. Mi salida es:
+ ¿Expandir el código para ver el código fuente para imprimir?·········10·········20·········30···· ····40 ·········50·········60·········70········80······ ···90····· ···100·······110·······120·······130········140···· ···150
1.test1,2,3 en modificarArray1
2.test1,2,3 modificaArray1
3.============================================
4.a, b, c en modificarArray2
5.test2,2,3 modificaArray2
Esto ilustra el hecho de que si sobrescribe directamente la referencia del parámetro real en una función, es válido dentro de la función, pero dejará de ser válido fuera del alcance de la función.