Function Definitions
در جاوااسکریپت چندین روش مختلف برای تعریف تابع وجود داره. هر کدوم کاربرد و رفتار خاص خودشون رو دارن.
1️⃣ Function Declaration (تعریف تابع کلاسیک)
-
میتونی تابع رو هر جایی صدا بزنی، حتی قبل از تعریف (به خاطر Hoisting).
2️⃣ Function Expression (تابع به صورت متغیر)
-
تابع داخل یک متغیر ذخیره میشه.
-
Hoisting نداره (یعنی باید بعد از تعریف صدا زده بشه).
3️⃣ Arrow Function (تابع پیکانی)
نسخه کوتاهتر و مدرنتر تابعها.
🔹 تفاوت مهم:
-
خودشون
this
ندارن (از context بیرونی میگیرن). -
برای فانکشنهای ساده خیلی کوتاه و خواناست.
4️⃣ Function Constructor (بهندرت استفاده میشه)
📌 این روش کمتر استفاده میشه، چون هم پیچیدهست، هم امنیت کمتری داره.
5️⃣ Immediately Invoked Function Expression (IIFE)
تابعی که همون لحظه که تعریف میشه اجرا هم میشه.
کاربرد: جلوگیری از آلوده شدن فضای global.
6️⃣ Anonymous Functions (تابع بینام)
تابعی که اسم نداره، معمولاً داخل callback ها استفاده میشه:
📌 جمعبندی
-
Declaration → تعریف کلاسیک (با hoisting).
-
Expression → داخل متغیر (بدون hoisting).
-
Arrow → کوتاه و مدرن (بدون
this
خودش). -
Constructor → خیلی کم استفاده میشه.
-
IIFE → اجرای فوری تابع.
-
Anonymous → بدون نام، برای callbackها.