سلام دوستان. یکی از مهمترین وظیفههای هر برنامهنویس اینه که بتونه از اطلاعات حفاظت کنه. توی یک زبان برنامهنویسی، اطلاعات شامل توابع و متغیرها میشن. یک برنامهی خوب، برنامهای هست که توی اون متغیرها سر جای خودشون قرار گرفته باشن. یعنی نباید بیش از حد نیاز قابل دسترس باشن و همچنین برای متغیرهای دیگه دردسرساز نشن. به طور خلاصه، قسمتهای یک برنامهی خوب، کپسوله (Encapsulated) هست.
توی این پست میخوایم یکی از روشهای داشتن یک برنامهی کپسوله شده رو یاد بگیریم. اسم این روش IIFE هست.
موارد زیر رو توی این قسمت یاد میگیریم:
- IIFE چیه
- چرا از IIFE استفاده کنیم
- پاس دادن آرگومان به تابع
- روشهای مختلف نوشتن IIFE
- استفاده از تابع با نام
IIFE چیه؟ 🤔
این یک مخفف برای عبارت Immediately Invoked Function Expression هست. یک اسم پیچیده، برای یک مفهوم بسیار ساده!
IIFE به تابعی گفته میشه که به محض تعریف شدن، اجرا میشه.
نحوه نوشتن اون به سادگی زیر هست:
(function () { })();
همونطور که میبینیم، کافیه یک تابع بینام (Anonymous Function) رو بین دو پرانتز باز و بسته قرار بدیم و در پایان، یک پرانتر باز و بسته () بذاریم که باعث میشه تابع اجرا بشه.
داخل تابع میتونیم کار دلخواهمون رو انجام بدیم. خب کاربرد این روش چیه؟
چرا از IIFE استفاده کنیم؟
کپسوله کردن قسمتهای برنامه! همونطور که میدونیم، متغیرهایی که توی توابع تعریف میشن، دارای حوزه محلی (Local Scope) هستن. محصور کردن متغیرها توی یک تابع، ۲ خوبی داره:
۱. متغیرها فقط مخصوص همون تابع یا اسکوپ هستن و از بیرون تابع قابل دسترسی نیستن. یعنی:
(function () { const x = 10; })() alert(x); // ReferenceError: x is not defined;
پس خیالمون راحته که متغیرهای ما امن هستن.
۲. متغیرهای گلوبال اسکوپ دستکاری نمیشن. یعنی: