في جافا سكريبت، نعلم أن تمرير مصفوفة كمعلمة فعلية إلى دالة يتم تمريره عن طريق مرجع، ولكن إذا تمت الكتابة فوق هذا المرجع في هذه الوظيفة، فماذا ستكون النتيجة؟ يرجى إلقاء نظرة على الكود أدناه:
+ قم بتوسيع الكود لعرض الكود المصدري والطباعة؟··········10········20········30·········40 ······ ··50························80············ ········100·· ·····110·········130·······140········150
01.var oldArray = [1, 2, 3];
02.
03.function AdjustArray1(oldArray) {
04.
oldArray[0] = 'test1'; // من الممكن تغيير عنصر في المصفوفة
05.
print(oldArray + 'in AdjustArray1');
06.}
07.
08.modifyArray1(oldArray);
09.print(oldArray + 'out AdjustArray1');
10.
11.
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 + 'in AdjustArray2');
20.}
واحد وعشرون.
22.modifyArray2(oldArray);
23.print(oldArray + 'out AdjustArray2');
يمكن تنفيذ هذا الرمز من خلال JavaScript Shell. مخرجاتي هي:
+ قم بتوسيع الكود لعرض الكود المصدري للطباعة؟··············20·········30····· ·····40 ··········50·············70········80······· ···90····· ···100·······110·······120·······130········140···· ···150
1.test1,2,3 في تعديلArray1
2.test1,2,3 خارج تعديل Array1
3.=================================================================================
4.أ، ب، ج في تعديل Array2
5.test2,2,3 خارج تعديل Array2
يوضح هذا حقيقة أنه إذا قمت بالكتابة مباشرة فوق مرجع المعلمة الفعلية في دالة، فسيكون صالحًا داخل الوظيفة، ولكنه سيصبح غير صالح خارج نطاق الوظيفة.