يعد كائن الوظيفة في JS أمرًا رائعًا ، لكنه غالبًا ما يكون مربكًا لأنه مرن للغاية.
اسمحوا لي أن أريكم مقتطف رمز أولا.
var scope = "global" ؛ function constructFunction () {var scope = "local" ؛ إرجاع وظيفة جديدة ("نطاق الإرجاع") ؛} constructFunction () () () ؛ دالة constructFunction2 () {var scope = "local" ؛ function function () {return scope ؛}} constructFunction2 () () ؛ما هو شعورك الأول عندما ترى هذين؟ كل العودة "محلية"؟ ؟ إذا كان هذا هو الحال ، فأنت بحاجة إلى إلقاء نظرة فاحصة على التفسير أدناه. يجب أن يكون ConstructFunction2 () سهلاً لفهم الإغلاق ، ولن أخوض في التفاصيل هنا. بعد ذلك ، سوف أركز على حالة البناء ().
يتم استخدام مُنشئ الدالة () هنا. على الرغم من أن منشئ الوظيفة () ليس شائع الاستخدام ، إلا أنه لا يزال ضروريًا لفهمها.
سواء كان عبارة تعريف دالة أو تعبير كمي مباشر للوظيفة ، يجب أن يستخدم تعريف الوظيفة الكلمة الأساسية للدالة (). يمكن أيضًا تعريف الوظائف الفردية بواسطة مُنشئ الدالة () ، مثل:
var f = new function ("x" ، "y" ، "return x*y") ؛التأثير الفعلي لهذا السطر يعادل السطر التالي من التعليمات البرمجية.
var f = function (x ، y) {x*y} ؛يمكن أن يمر منشئ الدالة () في أي عدد من وسيطات السلسلة ، والنص الذي يمثله الوسيطة الأخيرة هو جسم الوظيفة ؛ يمكن أن يحتوي على أي بيان JavaScript ، ويتم تقسيم كل عبارة بواسطة فاصلة فاصلة. جميع سلاسل الحجج الأخرى التي تم تمريرها إلى المنشئ هي سلاسل تحدد اسم الوظيفة. إذا كانت الوظيفة المحددة لا تحتوي على أي معلمات ، فما عليك سوى تمرير جسم وظيفة السلسلة إلى المنشئ.
هناك عدة نقاط لإيلاء اهتمام خاص حول مُنشئ الوظيفة ():
1. وظيفة () مُنشئ يسمح JavaScript بإنشاء وظائف وتجميعها ديناميكيًا في وقت التشغيل.
2. في كل مرة يتم فيها استدعاء مُنشئ الدالة () ، سيتم تحليل جسم الوظيفة وسيتم إنشاء كائن وظيفة جديد. إذا تم تنفيذ هذا المنشئ في حلقة أو مكالمات متعددة ، فستتأثر كفاءة التنفيذ. في المقابل ، لا يتم إعادة تنفيذ الوظائف المتداخلة وتعبيرات تعريف الوظيفة في الحلقات في كل مرة يتم تنفيذها.
2. النقطة الأخيرة هي أيضًا نقطة مهمة للغاية حول مُنشئ الوظيفة () ، أي أن الوظائف التي تنشئها لا تستخدم النطاق المعجمي. على العكس من ذلك ، سيتم دائمًا تنفيذ تجميع كود جسم الوظيفة في الوظيفة العليا. بعد قراءة هذا ، فإن الوظيفة المذكورة أعلاه بنيت FunctFunction () () ؛ يجب أن يكون من السهل فهم "عالمي"؟
ما سبق هو مُنشئ JS () JS () الذي أدخله المحرر. آمل أن يكون ذلك مفيدًا للجميع. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر على الجميع في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!