Dalam Javascript, kita tahu bahwa meneruskan array sebagai parameter aktual ke suatu fungsi diteruskan dengan referensi, tetapi jika referensi ini ditimpa dalam fungsi ini, apa hasilnya? Silakan lihat kode di bawah ini:
+ Perluas kode untuk melihat kode sumber dan mencetak?·········10········20········30·········40 ······ ··50··········60·········70·········80·········90· ········100·· ·····110·······120·······130·······140········150
01.var oldArray = [1, 2, 3];
02.
03.fungsi memodifikasiArray1(Array lama) {
04.
oldArray[0] = 'test1'; //Dimungkinkan untuk mengubah elemen array
05.
print(oldArray + 'di modifArray1');
06.}
07.
08.modifyArray1(oldArray);
09.print(oldArray + ' keluar memodifikasiArray1');
10.
11.print('============');
12.
13.oldArray = [1, 2, 3]; //Pulihkan array
14.
15.fungsi memodifikasiArray2(Array lama) {
16.
var array baru = ['a', 'b', 'c'];
17.
oldArray[0] = 'test2'; //Perubahan pada elemen array valid
18.
oldArray = newArray; //Timpa referensi, maka referensi tersebut akan menjadi tidak valid jika keluar dari cakupan fungsi
19.
print(oldArray + 'di modifArray2');
20.}
dua puluh satu.
22.modifyArray2(oldArray);
23.print(oldArray + ' keluar memodifikasiArray2');
Kode ini dapat dieksekusi melalui shell JavaScript. Output saya adalah:
+ Perluas kode untuk melihat kode sumber yang akan dicetak?·········10········20·········30···· ····40 ·········50········60·········70········80······ ···90····· ···100·······110·······120·······130········140···· ···150
1.test1,2,3 di modifikasiArray1
2.test1,2,3 keluar modifikasiArray1
3.=============
4.a,b,c di modifikasiArray2
5.test2,2,3 keluar memodifikasiArray2
Hal ini menggambarkan fakta bahwa jika Anda secara langsung menimpa referensi parameter sebenarnya dalam suatu fungsi, maka referensi tersebut valid di dalam fungsi tersebut, namun akan menjadi tidak valid di luar cakupan fungsi tersebut.