الدوال functions لغة جافاسكربت
الدوال ( functions ) جافاسكربت هي كتلة برمجية تنفذ مجموعة من المهام وفق ترتيب محدد. و هي تكون عبارة عن برنامج فرعي مهمته تنفيذ مهمة معينة حين يتم إستدعاءه ( أي عبارة عن مجموعة أوامر مجمعة في مكان واحد و تتنفذ عندما نقوم بإستدعائها).
الشكل العام لكتابة الدالة JavaSccript
function name(parameter){ /الأوامر }
- الكلمة function هي الكلمة الأساسية لتعريف دالة في جافاسكربت.
- الكلمة name هو الإسم الذي نعطيه للدالة.
- و ما بين الأقواس parameter في حال كنا نريد تمرير قيم ووضع باراميترات و يتم الفصل بينها عن طريق فاصلة لاتينية ,.
سوف نشرح لكم عن خاصية onclick في حال أن أحدهم ضغط على صورة أو زر موجود في صفحة ما, و نريد منه أن يتم تشغيل الأوامر الموجودة في دالة function. اولاً نفتح ملف html و نضيف زر عن طريق الوسم button. أنشأنا زر لكن لا توجد به أوامر لتتنفذ عند النقر على الزر.
سنربط الزر في دالة function كالتالي يكون:
<button type="button" onclick = "play()">اضغط هنا للتشغيل</button>
و يكون شكل الكود في ملف الجافاسكربت
function play(){ alert("true"); }
أنشأنا دالة إسمها play و الأوامر في هذه الدالة عند تشغيلها هي طباعة كلمة true في ديالوك منبثق, لأننا قمنا بوضع خاصية onclick من أجل عندما نضغط على الزر تبدأ بالعمل. عند تشغيل الكود في المتصفح نجد النتيجة
كما لآحظنا عندما نقرنا على الزر نفذ لنا أوامر الجافاسكربت الموجودة في function. هذا النوع هو من دون باراميتر.
المعاملات parameters لغة javascript
معظم الدوال تأخذ معاملات parameters، هي عبارة عن سلسلة من المتغيّرات تفصل بينها فاصلة. يمكن تعريف معاملات parameters بالعدد الذي نريده ضمن الدوال.
لتعريف باراميترات في الدوال يكون بالشكل
function name(parameter1, parameter2, parameter3){ /الأوامر }
نسند القيم إلى الباراميترات بتمريرها بين قوسين إلى الدالة في سلسلة تفصل بينها فاصلة ,. تُسمَّى القيم المُمرَّرة إلى الدالة بالمعطيات ارجيومنت Arguments. لنأخذ مثال عندما يكون به باراميتر
<button type="button" onclick = "data('Muhammad', 1994,28)">اضغط هنا للتشغيل</button>
انشأنا باراميترات في ملف الجافاسكربت و وضعنا قيمها الأرجيومنت في ملف html.
جملة إرجاع Return المستخدمة مع الدوال
تحتوي الدوال على جملة الإرجاع Return و تتكون من كلمة return متبوعة بقيمة.
function name(parameter1, parameter2, parameter3){ return 'قيم' }
عندما يجد المترجم جملة Return فإنه سوف يتوقف عن تنفيذ التعليمات الموالية في الدالة, ويقوم بإرجاع قيمة. و يمرر القيمة إلى الشيفرة التي قامت بإستدعاء الدالة.
function sum($saja, $muhammad) { return $saja + $muhammad; } var result = sum(27, 28); console.log(result);
أنشأنا دالة إسمها sum أي لجمع قيم, و مررنا بارميترين لهذه الدالة وهما saja و muhammad. ثم قلنا للدالة عبر جملة return قم بإرجاع لنا ناتج جمع الباراميترين. و أنشأنا متغير لإعطاء قيم للباراميترات و إسمه result و مررنا له 27 و 28. ثم قمنا بطباعة الناتج عن طريق console و عند تشغيل الكود ستكون نتيجته هي:
55
الدوال المتداخلة Nested في لغة جافاسكربت
دوال متداخلة Nested يمكن في لغة جافاسكربت أن تحتوي الدالة على داخلة داخلية أخرى بداخل دالة و يمكن أن يكون دالة داخلية أو أكثر وهي تقع في نطاق الدالة الخارجية. كما يمكن لهذه الدالة الداخلية أن تصل إلى متغيرات الدوال الخارجية. ولا يمكن للدالة الخارجية أن تصل إلى المتغيرات في داخل الدالة الداخلية.
مثال
function mainFun($saja) { function nestedFun() { console.log($saja); } return nestedFun(); } mainFun("sudan");
أنشأنا دالة رئيسية وهي mainFun و مررنا لها باراميتر $saja. و أنشأنا دالة متداخلة بداخل الدالة الرئيسية وهي nestedFun و تقوم بطباعة الباراميتر الموجود في الدالة الرئيسية عبر console. ثم تقوم الدالة الرئيسية بإرجاع الدالة الداخلية عبر return ثم مررنا قيمة للدالة الرئيسية وهي sudan لتكون قيمة للباراميتر.
الدوال المجهولة anonymous جافاسكربت
تسمح لنا لغة جافاسكربت بإنشاء دوال مجهولة anonymous بدون أي إسم, و استخدام الدوال المجهولة يكون بتعيينها لمتغير ما.
var sum = function ($saja, $muhammad) { console.log($saja + $muhammad); } sum(2, 3);
قمنا بإنشاء متغير وهو sum و عيننا لهذا المتغير دالة بها باراميترين وهما saja و muhammad. ثم عرضنا البيانات عبر console و البيانات هي ناتج جمع الباراميترين الموجودات في الدالة المجهولة. ثم مررنا قيم للباراميترات و هي 2 و 3.
نتيجة
5