توابع بی نام و توابع خود فراخوان

در جاوااسکریپت بحثی به نام توابع بی نام یا Anonymous functions مطرح شد که به شما اجازه می‌دهد یک تابع را به عنوان یک آرگومان به تابع دیگر ارسال کنید و یا آن را در داخل یک متغیر قرار دهید. توابع بی نام همانند توابع عادی تعریف می‌شوند و فقط نام ندارند و در بعد از آکولاد بسته آنها علامت سیمیکالن (;) قرار می‌گیرد. دستور استفاده از متدهای بی نام به صورت زیر است :

var variableName  = function (parameters)
{

};

از آنجاییکه توابع بی نام، نام ندارند، پس نمی‌توان آنها را به صورت یک تابع معمولی صدا زد. برای این منظور باید نام متغیری که تابع را به آن اختصاص داده‌ایم را بنویسیم و سپس دو علامت پرانتز و یک سیمیکالن در جلوی آن قرار دهیم. به کد زیر توجه کنید :

 1: var ShowMessage = function(name)
 2: {
 3:     console.log("Hello", name);
 4: };
 5: 
 6: ShowMessage("World");
Hello World!

همانطور که در کد بالا مشاهده می‌کنید، ابتدا در خط 1 تابع بی نام را به متغیر ShowMessage اختصاص داده‌ایم و سپس در خط 6 نام این متغیر را نوشته و در با گذاشتن دو پرانتز در جلوی نام آن و ارسال آرگومان باعث اجرای کدهای بدنه متد بی نام شده‌ایم. یک نوع دیگر از توابع در جاوا اسکریپت وجود دارند که به صورت خودکار فراخوانی و کدهای آنها اجرا می شوند. به این توابع self-invoking گفته می شود. نحوه ایجاد یک تابع self-invoking به صورت زیر می باشد:

(
    function (parameters) 
    {
        //Some code
    }
)

(Argument);

به مثال زیر توجه کنید:

 1: (
 2:     function (name) 
 3:     {
 4:         console.log("Hello", name);
 5:     }
 6: )
 7: 
 8: ("World!");
Hello World!

همانطور که در کد بالا مشاهده می کنید، این توابع در داخل یک جفت پرانتز تعریف می شوند (خطوط 6-1) و برای صدا زدن آنها کافیست که یک جفت پرانتز گذاشته و در داخل این پرانتزها هم آرگومان هایی که لازم است به تابع ارسال شوند را بنویسیم (خط 8). اگر هم تابع هیچ آرگومانی قبول نکند، کافیست که پرانتزها را خالی بگذارید. کد بالا را به صورت زیر تغییر داده و نتیجه را مشاهده کنید:

(
    function () 
    {
        console.log("Hello World!");
    }
)

();
Hello World!