ใน Javascript เรารู้ว่าการส่งอาร์เรย์เป็นพารามิเตอร์จริงไปยังฟังก์ชันจะถูกส่งผ่านโดยการอ้างอิง แต่ถ้าการอ้างอิงนี้ถูกเขียนทับในฟังก์ชันนี้ ผลลัพธ์จะเป็นอย่างไร โปรดดูรหัสด้านล่าง:
+ ขยายโค้ดเพื่อดูซอร์สโค้ดและพิมพ์?·········10········20·······30·········40 ······ ··50·········60·········70·········80··········90· ········100·· ·····110·······120·······130·······140········150
01.var oldArray = [1, 2, 3];
02.
03.ฟังก์ชั่น modifiedArray1(oldArray) {
04.
oldArray[0] = 'test1'; // สามารถเปลี่ยนองค์ประกอบของอาร์เรย์ได้
05.
พิมพ์ (oldArray + ' ใน modifiedArray1');
06.}
07.
08.modifyArray1(อาร์เรย์เก่า);
09.print(oldArray + ' ออก modifiedArray1');
10.
11.print('==========================================');
12.
13.oldArray = [1, 2, 3]; // คืนค่าอาร์เรย์
14.
15.ฟังก์ชั่น modifiedArray2(oldArray) {
16.
var newArray = ['a', 'b', 'c'];
17.
oldArray[0] = 'test2'; //การเปลี่ยนแปลงองค์ประกอบอาร์เรย์นั้นถูกต้อง
18.
oldArray = newArray; // เขียนทับข้อมูลอ้างอิง มันจะไม่ถูกต้องเมื่ออยู่นอกขอบเขตของฟังก์ชัน
19.
พิมพ์ (oldArray + ' ใน modifiedArray2');
20.}
ยี่สิบเอ็ด
22.modifyArray2(อาร์เรย์เก่า);
23.print(oldArray + ' ออก modifiedArray2');
รหัสนี้สามารถดำเนินการผ่านเชลล์ JavaScript ผลลัพธ์ของฉันคือ:
+ ขยายโค้ดเพื่อดูซอร์สโค้ดที่จะพิมพ์?··········10·········20·········30···· ····40 ·········50·········60·········70········80······ ···90····· ···100·······110·······120·······130········140···· ···150
1.test1,2,3 ใน modifiedArray1
2.test1,2,3 ออก modifiedArray1
3.=========================================
4.a,b,c ใน modifiedArray2
5.test2,2,3 ออก modifiedArray2
สิ่งนี้แสดงให้เห็นถึงข้อเท็จจริงที่ว่า หากคุณเขียนทับการอ้างอิงของพารามิเตอร์จริงในฟังก์ชันโดยตรง ค่านั้นจะใช้ได้ภายในฟังก์ชัน แต่จะกลายเป็นใช้ไม่ได้นอกขอบเขตของฟังก์ชัน