Javascript에서는 배열을 실제 매개변수로 함수에 전달하는 것이 참조로 전달된다는 것을 알고 있지만 이 참조를 이 함수에서 덮어쓰면 결과는 어떻게 될까요? 아래 코드를 살펴보십시오.
+ 소스코드를 보고 인쇄하려면 코드를 확장하세요?·········10········20········30··········40 ········50·········60·········70·········80·········90············ ········100·······110·······120·······130·······140·······150
01.var oldArray = [1, 2, 3];
02.
03.함수 수정Array1(oldArray) {
04.
oldArray[0] = 'test1'; //배열의 요소를 변경할 수 있습니다.
05.
print(oldArray + 'inmodifyArray1');
06.}
07.
08.modifyArray1(oldArray);
09.print(oldArray + ' out 수정Array1');
10.
11.print('=========================================');
12.
13.oldArray = [1, 2, 3]; //배열 복원
14.
15.함수 수정Array2(oldArray) {
16.
var newArray = ['a', 'b', 'c'];
17.
oldArray[0] = 'test2'; //배열 요소에 대한 변경 사항이 유효합니다.
18.
oldArray = newArray; //참조를 덮어쓰면 함수 범위를 벗어나면 무효화됩니다.
19.
print(oldArray + 'inmodifyArray2');
20.}
스물하나.
22.modifyArray2(oldArray);
23.print(oldArray + ' out 수정Array2');
이 코드는 JavaScript 셸을 통해 실행될 수 있습니다. 내 출력은 다음과 같습니다.
+ 인쇄할 소스 코드를 보려면 코드를 확장하세요.·········10·········20········30···· ····40·········50········60·········70·······80······ ···90········100·······110·······120·······130········140···· ···150
1.modifyArray1의 test1,2,3
2.test1,2,3 out 수정Array1
3.===========================================
수정Array2의 4.a,b,c
5.test2,2,3 out 수정Array2
이는 함수에서 실제 매개변수의 참조를 직접 덮어쓰면 함수 내부에서는 유효하지만 함수 범위 밖에서는 유효하지 않게 된다는 사실을 보여줍니다.