يأتي ذلك من التفكير في سؤال اختبار مكتوب، وعادةً لن يقوم أحد بتعديل قيمة المعلمة داخل الوظيفة. تمت مناقشته هنا فقط. هناك ثلاث طرق لتعديله.
1. قم بتعديل المعلمات الرسمية مباشرة عند الإعلان عن الوظيفة
انسخ رمز الكود كما يلي:
الدالة f1(أ) {
تنبيه (أ)؛
a = 1;// تعديل المعلمة الرسمية a
تنبيه (1 === أ)؛
تنبيه (1 === الوسائط[0])؛
}
f1(10);
تحدد الدالة f1 المعلمة a. عند الاتصال، يتم تمرير المعلمة 10، ويتم إخراج 10 أولاً، ويتم تعديل a إلى 1، ويتم ظهور true مرتين، وتكون الوسيطتان a و[0] كلاهما 1.
2. قم بالتعديل من خلال كائن الوسائط داخل الوظيفة
انسخ رمز الكود كما يلي:
الدالة f2(أ) {
تنبيه (أ)؛
الوسيطات[0] = 1; // تعديل الوسائط
تنبيه (1 === أ)؛
تنبيه (1 === الوسائط[0])؛
}
التأثير هو نفس الدالة f1.
3. المتغيرات المحلية المعلنة داخل الوظيفة لها نفس اسم المعلمات الرسمية.
انسخ رمز الكود كما يلي:
الدالة f3(أ) {
تنبيه (أ)؛
var a = 1;// أعلن عن المتغير المحلي a وقم بتعيين قيمته 1
تنبيه (1 === أ)؛
تنبيه(الوسائط[0]);
}
f3(10);
تحدد الدالة f3 المعلمة الرسمية a، ويتم الإعلان عن المتغير المحلي a داخل الوظيفة وتعيين قيمة 1، ولكن هنا لا تزال المعلمة a، والتي يمكن إثباتها من خلال حقيقة أن الوسائط [0] التي تنبثق في النهاية تم تعديله إلى 1.
4. إذا قمت فقط بتعريف المتغير المحلي a دون تعيين قيمة، فإن الوضع مختلف.
انسخ رمز الكود كما يلي:
الدالة f3(أ) {
var a;//الإعلان فقط، بدون مهمة
تنبيه (أ)؛
تنبيه(الوسائط[0]);
}
f3(10);
في هذا الوقت، جميع النوافذ المنبثقة هي 10، وليست غير محددة.