تعبيرات وظائف JavaScript التي تم استدعاؤها فورًا (IIFE)

التعبير عن الوظيفة الذي يتم استدعاؤه فورًا هو طريقة لتنفيذ الوظائف فور إنشائها. تعتبر IIFEs مفيدة جدًا لأنها لا تلوث الكائن العالمي ، وهي طريقة بسيطة لعزل إعلانات المتغيرات


انتم استدعاء التعبير الوظيفي فورًا(IIFE for friends) هي طريقة لتنفيذ الوظائف فور إنشائها.

IIFEs مفيدة جدًا لأنلا يلوثون الكائن العالمي، وهي طريقة بسيطة لتحقيق ذلكعزل بيانات المتغيرات.

هذه هي الصيغة التي تحدد IIFE:

(function() {
  /* */
})()

يمكن تعريف IIFEs من خلال وظائف السهم أيضًا:

(() => {
  /* */
})()

لدينا أساسًا دالة محددة داخل الأقواس ، ثم نلحقها()لتنفيذ هذه الوظيفة:(/* function */)().

أقواس الالتفاف هذه هي في الواقع ما يجعل وظيفتنا ، داخليًا ، تعتبر تعبيرًا. بخلاف ذلك ، سيكون إعلان الوظيفة غير صالح ، لأننا لم نحدد أي اسم:

Invalid function declaration

تريد إعلانات الوظائف اسمًا ، بينما لا تتطلبها تعبيرات الوظائف.

يمكنك أيضًا وضع أقواس الاستدعاءداخلبين أقواس التعبير ، لا يوجد فرق ، فقط تفضيل التصميم:

(function() {
  /* */
}())

(() => { /* */ }())

بناء الجملة البديل باستخدام عوامل أحادية

هناك بعض الصيغ الأكثر غرابة التي يمكنك استخدامها لإنشاء IIFE ، لكنها نادرًا ما تُستخدم في العالم الحقيقي ، وتعتمد على استخدامأيعامل أحادي:

-(function() {
  /* */
})() +
  (function() {
    /* */
  })()

~(function() { /* */ })()

!(function() { /* */ })()

(لا يعمل مع وظائف الأسهم)

اسمه IIFE

يمكن أيضًا تسمية IIFE بالوظائف العادية (وليس وظائف الأسهم). هذا لا يغير حقيقة أن الوظيفة لا "تتسرب" إلى النطاق العام ، ولا يمكن استدعاؤها مرة أخرى بعد تنفيذها:

(function doSomething() {
  /* */
})()

تبدأ IIFEs بفاصلة منقوطة

قد ترى هذا في البرية:

;(function() {
  /* */
})()

هذا يمنع حدوث مشاكل عند ربط ملفي JavaScript بشكل أعمى نظرًا لأن JavaScript لا يتطلب فاصلة منقوطة ، فقد يتم ربط ملف به بعض العبارات في السطر الأخير مما يؤدي إلى حدوث خطأ في بناء الجملة.

يتم حل هذه المشكلة بشكل أساسي مع حزم الكود "الذكية" مثلحزمة الويب.


المزيد من دروس js: