بسبب أخطاء تصميم اللغة ، يمكن التعامل مع الحجج كصفيف.
نسخة الكود كما يلي:
وظيفة Zero () {
console.log (الحجج [0]) ؛
}
سيكون هناك
نسخة الكود كما يلي:
وظيفة Zero () {
لـ (var i = 0 ؛ i <enduments.length ؛ i ++) {
console.log (الحجج [i]) ؛
}
}
يستفيد من حقيقة أن JavaScript هو أن Javasc
يوفر متغير الوسائط هنا واجهة تشبه الصفيف للوسائط الفعلية. بسبب المعلمات المتغيرة للوسائط هنا ، يمكننا استخدام هذا الشيء المثير للاهتمام للقيام ببعض الأشياء المثيرة للاهتمام ، مثل التحميل الزائد.
javscript إعادة تحميل
هناك سؤال حول التحميل الزائد على StackVoerFlow ، وبالتالي فإن الإجابة الأولى هي
نسخة الكود كما يلي:
if (typeof friend === "undefined") {
} آخر {
}
إجابة أخرى
نسخة الكود كما يلي:
التبديل (الوسائط. الطول) {
الحالة 0:
// ربما خطأ
استراحة؛
الحالة 1:
// افعل شيئًا
استراحة؛
الحالة 2:
افتراضي: // تقع من خلال التعامل مع حالة المزيد من المعلمات
// افعل شيئًا آخر
استراحة؛
}
لكن هذه الطريقة ليست في الحقيقة جيدة المظهر. هل ستصبح وظيفتنا في النهاية هكذا؟
نسخة الكود كما يلي:
وظيفة Zero1 () {
console.log ('الحجج 1')
} ؛
وظيفة Zero2 () {
console.log ('الحجج 2')
} ؛
وظيفة Zero () {
if (الحجج. length == 1) {
Zero1 () ؛
} آخر{
Zero2 () ؛
}
}
انها حقا ليست جيدة المظهر على الإطلاق. حتى لو قمنا بتغيير المفتاح ... في حالة ، فلن يبدو جيدًا.
حجج JavaScript ليست صفيف
الحجج ليست دائمًا صفيفًا كما نرى ، وأحيانًا لا.
نسخة الكود كما يلي:
وظيفة مرحبا () {
console.log (typeof almations) ؛
}
هنا نوع الوسائط هو كائن ، على الرغم من أن نوع الصفيف هو أيضًا كائن ، على الرغم من أنه يمكننا تحويله إلى صفيف
نسخة الكود كما يلي:
var args = array.prototype.slice.call (وسيطات) ؛
ولكن هذا يدل أيضًا على أن هذا ليس صفيفًا ، بل يحتوي فقط على خاصية الصفيف الوحيدة ، أي الطول. بالإضافة إلى هذا
الحجج. callee
الإشارة إلى وظيفة التنفيذ حاليًا.
الحجج
الإشارة إلى الوظيفة التي استدعت وظيفة التنفيذ حاليًا.
الحجج. الطول
الإشارة إلى عدد الوسائط التي تم تمريرها إلى الوظيفة.