یک مخفف برای عبارت Immediately Invoked Function Expression هست. به تابعی گفته میشه که به محض اینکه تعریف شد، فراخوانی بشه. نوشتن اون خیلی ساده هست. کافیه تعریف تابع رو بین دو پرانتز باز و بسته قرار بدیم.
وقتی تعریف یک تابع رو بین دو پرانتز قرار میدیم، چیزی که بین دو پرانتز قرار میگیره مثل یک عبارت (Expression) با اون رفتار میشه. عبارت یا Expression یعنی میتونیم از اون انتظار یک مقدار داشته باشیم و مثلا اون رو بریزیم توی یک متغیر. به پرانتزهای اطراف تابع زیر دقت کنین:
(function () { })();
با اینکار تابعی که بین دو پرانتز هست بلافاصله بعد از تعریف اجرا میشه که یکی از مزیتهای IIFE هست. اگه نخوایم از این مزیت استفاده کنیم باید اون رو بصورت زیر مینوشتیم:
function funcName() { } funcName();
خب از معایب کد بالا اینه که یک کار اضافی داره صورت میگیره. همچنین از funcName یک متغیر سراسری درست شد. از مزیتهای IIFE اینه که مقدارهای سراسری دچار تغییر نمیشن:
function name() { console.log('Bob'); } (function name() { console.log('Lucas'); })(); // Lucas name(); // Bob
منبع: