Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors

JavaScript – IIFE – Immediately Invoked Function Expressions

JavaScript - IIFE
JavaScript - IIFE

במאמר זה נעסוק ב-IIFE, פונקציה מסוג זה מופעלת באופן מידי מהרגע שהיא נכנסת ל-Stack, לא חייב לקרוא לפונקציה זו בצורה מפורשת בשביל להפעיל אותה.

פונקציות הן חלק מאוד גדול ומאוד משמעותי בעולם התכנות ו-JavaScript לקח אותם לרמה חדשה לגמרי.
ב-JavaScript קיימות מגוון של פונקציות:

  • פונקציות רגילות עם שם
  • פונקציות אנונימיות
  • פונקציות שמבוצעות ברגע שמצהירים עליהם. לפונקציות כאלה אנחנו קוראים  – Immediately Invoked Function Expressions או בקצרה IIFE.
IIFE
IIFE

למה זה נקרא IIFE?

Immediately Invoked – בזכות השם קל להסביר ולהבין על מה מדובר.
הפונקציה נקראת ככה בגלל שהיא מופעלת מידית מהרגע שהיא נכנסת למחסנית (Stack),
לא חייב לקרוא לפונקציה באופן מפורש בכדי להפעיל אותה.
אם נסתכל על הסינטקס אנחנו נראה שני זוגות של סוגריים סגורים –
הזוג הראשון מכיל את ההיגיון שיש בתוך הפונקציה,
הזוג השני אחראי על זה שהפונקציה יבצע ביטוי באופן מידי בלי לקרוא לה.

Function Expressions – זה בעצם פונקציה המשמשת כביטוי.
שפת JavaScript מאפשרת לנו להשתמש כביטוי בפונקציה אם אנחנו מקצים את הפונקציה למשתנה, עוטפים אותה בסוגריים או שמים את הלוגיקה לא לפני הפונקציה.
אפשר להסתכל על הדוגמאות למטה:

FUNCTION EXAMPLES
FUNCTION EXAMPLES

המרת פונקציות ל-IIFE

ניתן להמיר פונקציה רגילה ל-IIFE (פונקציה מידית) לאחר שני שלבים בלבד.

  • בזמן הגדרת פונקציה רגילה לעטוף את ההגדרה בתוך זוג סגור של סוגריים, מה שיצור לנו את ביטוי הפונקציה.
  • בסוף להוסיף עוד זוג סוגריים עם נקודה-פסיק כדי לסמן את סוף ההצהרה, וככה המרנו את הפונקציה רגילה ל-IIFE.
CONVERT TO IIFE
CONVERT TO IIFE

IIFE – נקודות חשובות

  • פונקציה מידית עוקבת אחרי ההיקף שלה (scope) כמו כל פונקציה אחרת ב-JavaScript. החלק של השם המופעל מבלבל מפתחים מכיוון שהם מצפים שהפונקציה המידית
    תרוץ ללא קשר להיקף הפונקציה – טעות.
    לדוגמה למטה אפשר לראות שבה הפונקציה המידית מוגדרת בתוך פונקציה ותופעל רק אחרי שנקרא לפונקציית האב.
IMPORTANT POINT
IMPORTANT POINT
  • ל-IIFE יש היקף משלו, כלומר המשתנים שאתה מכריז בביטוי הפונקציה לא יהיו זמינים מחוץ לפונקציה.
  • בדומה לפונקציות אחרות פונקציות מידיות יכולות להיות גם בשמות או אנונימיות, אבל גם אם לפונקציה מידית יש שם אי אפשר להפנות/להפעיל אותה.
  • ל-IIFE יכולים להיות גם פרמטרים. לדוגמה:
IIFE ARGUMENTS
ARGUMENTS

 

למה כדי להשתמש ב-IIFE?

IIFE הוא דרך טובה לאבטח את ההיקף(Scope).
אתה יכול להשתמש ב-IIFE כדי למנוע בעיות בהגדרה של משתנים גלובליים.
להגן על נתונים פרטיים ולהימנע מהתנגשויות של שימוש בספריות רבות המייצאות את אותו שם אובייקט.
למרות שאפשר להחליף חלק מהשימושים של IIFE בתכונות ES6, עדיין חשוב ללמוד על IIFE כדי להבין בבירור כיצד פועל היקף ב-JavaScript.
אי אפשר להתאים פרויקטים מדור קודם ל-ES6 באופן מיידי, אז IIFE עדיין ממלאים תפקיד גדול.

 

לקריאה מורחבת יש ללחוץ כאן

רוצים לשתף את המדריך?

אהבתכם את המדריך? פתר לכם תקלה? הזמינו את כותב המדריך לכוס קפה

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

כתיבת תגובה

הזמינו אותי לכוס קפה
buy me coffee

אהבתכם את המדריך? פתר לכם תקלה? הזמינו את כותב המדריך לכוס קפה

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