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.}
21。
22.modifyArray2(oldArray);
23.print(oldArray + ' outmodifyArray2');
このコードは、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 出力modifyArray1
3.=========================================
4.modifyArray2 の a、b、c
5.test2,2,3 outmodifyArray2
これは、関数内の実パラメータの参照を直接上書きすると、関数内では有効ですが、関数のスコープ外では無効になるという事実を示しています。