IIFE ב- JavaScript: מהם ביטויי פונקציה המופעלים באופן מיידי?

הצהרת פונקציות

פונקציה שנוצרה בהצהרת פונקציה היא אובייקט פונקציה ויש לה את כל המאפיינים, השיטות וההתנהגות של אובייקטים פונקציונליים. דוגמא:

 function statement(item){ console.log('Function statement example '+ item); }

ביטוי פונקציה

ביטוי פונקציה דומה להצהרת פונקציה, אלא שניתן להשמיט את שם הפונקציה כדי ליצור פונקציות אנונימיות. דוגמא:

 var expression = function (item){ console.log('Function expression example '+ item); }

מיד הופעל פונקציות ביטויים

ברגע שנוצרת פונקציה היא קוראת לעצמה אינה צריכה להפעיל במפורש. בדוגמה שלמטה המשתנה iife יאחסן מחרוזת המוחזרת על ידי ביצוע הפונקציה.

 var iife = function (){ return 'Immediately Invoked Function Expressions(IIFEs) example '; }(); console.log(iife); // 'Immediately Invoked Function Expressions(IIFEs) example '

ההצהרה לפני IIFE צריכה להסתיים תמיד ב-; או שזה יזרוק שגיאה.

דוגמה גרועה :

var x = 2 //no semicolon, will throw error (function(y){ return x; })(x); //Uncaught TypeError: 2 is not a function

מדוע להשתמש בביטויים של פונקציות שהופעלו מייד?

 (function(value){ var greet = 'Hello'; console.log(greet+ ' ' + value); })('IIFEs');

בדוגמה לעיל כאשר מנוע javascript מבצע מעל קוד זה הוא ייצור הקשר ביצוע גלובלי כאשר הוא רואה קוד ויוצר אובייקט פונקציה בזיכרון עבור IIFE. וכאשר היא מגיעה לקו 46בזכות איזו פונקציה מופעלת נוצר הקשר ביצוע חדש באופן מיידי ולכן משתנה שלום נכנס להקשר זה של ביצוע פונקציה ולא אל הגלובלי זה מה שמייחד אותו. This ensures that code inside IIFE does not interfere with other code or be interfered by another codeוכך הקוד בטוח.

עוד מידע

  • ביטוי פונקציה מופעל באופן מיידי בוויקיפדיה
  • מה עושה הנקודה-פסיק המוביל בספריות JavaScript?