В Javascript мы знаем, что передача массива в качестве фактического параметра в функцию передается по ссылке, но если эта ссылка будет перезаписана в этой функции, каков будет результат? Пожалуйста, посмотрите на код ниже:
+ Развернуть код, чтобы просмотреть исходный код и распечатать?·········10·······20········30·········40 ······ ··50········60········70········80········90· ········100·· ·····110·······120·······130·······140·······150
01.var oldArray = [1, 2, 3];
02.
03.функция ModifyArray1(oldArray) {
04.
oldArray[0] = 'test1'; //Можно изменить элемент массива
05.
print(oldArray + 'вmodifyArray1');
06.}
07.
08.modifyArray1(oldArray);
09.print(oldArray + 'outmodifyArray1');
10.
11.print('=======================================');
12.
13.oldArray = [1, 2, 3] // Восстанавливаем массив
14.
15.функция ModifyArray2(oldArray) {
16.
var newArray = ['a', 'b', 'c'];
17.
oldArray[0] = 'test2'; //Изменения элементов массива действительны
18.
oldArray = newArray; //Перезаписываем ссылку, она станет недействительной, как только выйдет за пределы области действия функции.
19.
print(oldArray + 'вmodifyArray2');
20.}
двадцать один.
22.modifyArray2(oldArray);
23.print(oldArray + 'outmodifyArray2');
Этот код можно выполнить через оболочку JavaScript. Мой результат:
+ Разверните код, чтобы просмотреть исходный код для печати?·········10········20········30···· ····40 ········50········60········70·······80······ ···90····· ···100·······110·······120·······130·······140···· ···150
1.test1,2,3 в ModifyArray1
2.test1,2,3 из ModifyArray1
3.========================================
4.a,b,c вmodifyArray2
5.test2,2,3 из ModifyArray2
Это иллюстрирует тот факт, что если вы напрямую перезаписываете ссылку на фактический параметр в функции, он действителен внутри функции, но станет недействителен вне области действия функции.