تصف هذه المقالة استخدام وظائف مجهولة في JavaScript. شاركه للرجوع إليه. التحليل المحدد هو كما يلي:
ملخص:
تشرح هذه المقالة الشيء الأكثر أهمية والهمية في وظائف JavaScript. السبب في أنني كتبت هذا المقال لأنني سألت ذلك خلال المقابلة ، والتي تعتبر أيضًا مراجعة الماضي وتعلم الجديد.
لنأخذ مثالاً أولاً. إذا فهمت ذلك ، فهذا يعني أنك فهمت ما الذي ستتحدث عنه هذه المقالة.
انسخ الرمز كما يلي: var f = (function () {
الدالة f () {return 10 ؛}
إرجاع f () ؛
الدالة f () {return 20 ؛}
var f = 30 ؛
}) () ؛
console.log (f) ؛
في البرمجة المتقدمة JavaScript ، يتم وصف الوظائف بهذه الطريقة - يمكنها تغليف أي عدد من العبارات ويمكن استدعاؤها وتنفيذها في أي مكان وفي أي وقت. لقد قدمت وضعًا صارمًا من قبل ، والوضع الصارم له بعض القيود على الوظائف:
① لا يمكن تسمية الوظيفة eval أو الوسائط
② لا يمكن تسمية المعلمات على أنها تقييم أو وسيطات
③ لا يمكن أن تكون المعلمتان المسماة نفس الاسم
سيؤدي الموقف أعلاه إلى حدوث أخطاء في بناء الجملة ولن يتم تنفيذ الكود.
تعريف الوظيفة
تنقسم تعريفات الوظائف إلى ثلاثة أنواع
1. مُنشئ
نسخة الكود كما يلي: var fun = new funciton () ؛
2. التعريف العادي
انسخ الرمز على النحو التالي: Function Fun () {}
3. التعريف الوظيفي
نسخة الكود كما يلي: var fun = function () {} ؛
جميع الطرق الثلاث يمكن أن تحدد الوظيفة المرح.
المعلمة
لا تمانع الوظائف في عدد المعلمات التي يتم تمريرها ، ولا تهتم بنوع البيانات الذي تم تمرير المعلمات فيها. حتى إذا كانت الوظيفة التي تحددها تتلقى معلمتين فقط ، فقد لا تمر بالضرورة معلمتين عند استدعاء هذه الوظيفة. يمكن تمرير واحد أو ثلاثة أو حتى لا توجد معلمات. والسبب هو أن المعلمات يتم تمثيلها داخليًا بواسطة صفيف. في جسم الوظيفة ، يمكنك الوصول إلى صفيف المعلمة من خلال كائن الوسائط ، على سبيل المثال
انسخ الرمز على النحو التالي: الوظيفة sealhi () {
التنبيه ("Hello" + Minfuments [0] + "،" + mations [1]) ؛
}
من خلال الوصول إلى خاصية طول كائن الوسائط ، يمكننا معرفة عدد المعلمات الموجودة. سيعود طول الوظيفة عدد معلمات الوظيفة.
ملاحظة: تمر جميع المعلمات ، ومن المستحيل تمرير المعلمات من خلال المراجع.
لا يمكن تحميل الوظائف ، ولا يمكن إعادة كتابتها إلا.
إذا تم تعريف وظيفتين بنفس الاسم ، فإن الاسم ينتمي إلى آخر وظيفة محددة ، على سبيل المثال:
نسخة الكود كما يلي:
وظيفة إضافة (num) {
إرجاع NUM + 100 ؛
}
وظيفة إضافة (num) {
إرجاع NUM + 200 ؛
}
var result = add (100) // 300
ملاحظة: تتوقف الوظيفة وتخرج مباشرة بعد تنفيذ بيان الإرجاع.
أنواع الوظائف
تنقسم الوظائف إلى نوعين: وظيفة الاسم ووظيفة مجهولة. على سبيل المثال ، الوظيفة الشهيرة التالية
انسخ الرمز على النحو التالي: Function Fun () {
}
إذا تم استدعاؤه ، فقط متعة () مطلوبة.
وظائف مجهولة ، كما يوحي الاسم ، ليس لها أسماء الوظائف. على سبيل المثال
وظيفة() {}
يتم استدعاء مكالمات الوظائف من خلال أسماء الوظائف. كيف تسمي وظائف مجهولة؟ أحدهما هو تعيين وظيفة مجهولة للمتغير ، مما يسمح لهذا المتغير بالعمل كاسم الوظيفة. هناك طريقة أخرى هي استخدام () للاتصال به ، على سبيل المثال ، الطرق الثلاثة التالية
1. (function () {return ؛} ()) ؛
2. (function () {return ؛}) () ؛
3. function () {return ؛} () ؛
مثال:
نسخة الكود كما يلي:
(وظيفة (x ، y) {
تنبيه (x + y) ؛
}) (2،3) ؛
// تنبيه (5)
سيتم تمرير 2 و 3 كمعلمات إلى x و y
دعنا نتحدث عن المثال العلوي. يتضمن هذا المثال عمليات الإغلاق ، والتي ستتم مناقشتها لاحقًا.
أولاً ، حدد متغير F ، ثم تعيين وظيفة مجهولة. هنا نحتاج أن نلاحظ أن تعريفات جميع المتغيرات في الوظيفة ستكون مسبقًا ، وبالتالي فإن ترتيب التنفيذ في الوظيفة المجهولة هو
نسخة الكود كما يلي:
var f = (function () {
var f = 30 ؛
الدالة f () {return 10 ؛}
الدالة f () {return 20 ؛}
إرجاع f () ؛
}) () ؛
المتغير الخارجي F والمتغير الداخلي F ليسوا في نفس النطاق (الإغلاق) ، لذلك لا يؤثر على بعضهما البعض. نظرًا لأنه لا يمكن تحميل الوظيفة ، فإن المتغير الخارجي f = (الدالة f () {return 20 ؛}) () ؛ ، وبالتالي فإن الإخراج النهائي هو 20.
آمل أن تكون هذه المقالة مفيدة لبرمجة JavaScript للجميع.