anonymous functions فى جافاسكربت


السلام عليكم و رحمه الله تعالى وبركاته

ال  anonymous function هى الوظائف المجهوله التى لا تحمل أسماء تدل عليها ، يمكنك رؤيه الوظائف المجهوله فى الكود التالى

document.onclick = function(){
// code here
}
setTimeout(function(){
// code here
},3000);

فى المثال السابق قمت بتسجيل الوظيفه المجهوله تستمع للحدث onclick للوثيقه ، و الكود الذى يليه ينفذ الكود بداخل الوظيفه المجهوله كل 3 ثوانى عن طريق الوظيفه setTimeout .

ليس لهذا السبب قمت بكتابه التدوينه ، و لكن قمت بكتابه التدوينه حتى اعرفكم ال self invoking anonymous function و هى الوظيفه المجهوله التى يتم تنفيذها تلقائيا و هذه هى صيغتها :

(function(){
// code here
})();

ميزه هذه الوظيفه انها ليس لها إسم فلن يتم حذفها او تعديلها او الكتابه عليها بأى حال من الاحوال – الوظائف العاديه يمكن مسحها او التعديل عليها ، ثانيا يتم تنفيذها تلقائيا بمجرد مرور المترجم عليها ،ثالثا جميع المتغيرات بداخلها تعتبر private يعنى لا يمكن الوصول إليها من خارجها و تستخدم هذه الطريقه لحمايه المتغيرات من ال global scope و تغليف ال frameworks إطر العمل لحمايتها من التصادم مع إطار عمل اخر يحتوى على متغيرات بنفس الأسماء ، و لتعريض اى متغير بداخلها عليك إستخدام return كما يوضح الكود التالى :

(function(){
var x = “secret”;
var y = “public”;
return y;
})();
alert(x); // undefined :)
alert(y); // public

About these ads

الأوسمة:

4 تعليقات to “anonymous functions فى جافاسكربت”

  1. احمد Says:

    درس جميل ,,
    يمكن ايضا وضع input لها

    (function(myVal){
    var x = “secret”;
    var y = myVal;
    return y;
    })("Hi");

  2. mostafa farghaly Says:

    ممتاز يا أحمد ، يبدو انك فهمت الدرس جيدا :) ، انا سعيد لذك

  3. إنشاء إضافة لمكتبة jQuery (الجزء الأول) Says:

    [...] وسبب ذلك هو لتجنب تضارب أو تصادم المتغيرات أو الدوال الموجودة في مكتبة JQuery أو أي مكتبة أخرى مع المتغيرات والدوال التي ستكتبها بحيث إذا كان هناك متغير بإسم A في أحد المكتبات أو الإضافات أو في ملف javascript خاص تستطيع كتابة متغير خاص بك بنفس الإسم بشرط أن يكون مغطى بهذه الطريقة، وهناك تدوينة تجد فيها شرح حول self-invoking anonymous function. [...]

  4. user Says:

    (function(){
    var x = “secret”;
    var y = “public”;
    return y;
    })();
    alert(x); // undefined :)
    alert(y); // undefined -_-

أضف تعليق

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

You are commenting using your WordPress.com account. تسجيل خروج   / تغيير )

Twitter picture

You are commenting using your Twitter account. تسجيل خروج   / تغيير )

Facebook photo

You are commenting using your Facebook account. تسجيل خروج   / تغيير )

Google+ photo

You are commenting using your Google+ account. تسجيل خروج   / تغيير )

Connecting to %s


تابع

Get every new post delivered to your Inbox.

%d مدونون معجبون بهذه: