الدوال والوظائف
تعريف الوظائف
وتحديدها
لابد من تعريف الوظائف قبل إستخدامها ،
وتوضع تعريفات الوظائف عادة في مقدمة وثائق
لغة الترميز النصية ، بالرغم من أن هذا
المكان ليس إلزاميا ، ولكن ذلك يضمن التعريف
قبل الإستخدام . والصيغة العامة
لتعريف الوظائف هي كمايلي :
function
FuncitonName(v1,v2,v3....){
الأوامر هنا
}
إسم الوظيفه FunctionName هو الإسم الذي
يستخدم للإشارة الى
الوظيفة أثناء إستدعائها ، والمعاملات v1,v2.... هي أسماء المتغيرات التي تمرر الى الوظيفة عند إستدعائها ،
وهذه المتغيرات تسمى Arguments وأخيرا ، يتم
تنفيذ الجمل المحصورة داخل الأقواس
{} نتيجة لإستدعاء أي وظيفة .
{
تشير الى علامة
البداية للوظيفة او الإجراء
}
تشير الى نهاية
الوظيفة او الاجراء
إذا ، دعنا نعرف
الآن الوظيفة addone .
function
addone(value){
newvalue = value + 1
return newvalue
}
الأمر
RETURN يعيد القيمة التي أسندت إلى newvalue
والآن دعنا نعرف
وظيفة أخرى ،لاتعيد أية قيم وإنما تقوم بعمل ما showit
function
showit(what){
alert (what)
}
إذا تنشيط الوظيفة
يعتبر عادة جزءاً من تعبير ما . فمثلا الجمله
التاليه تستدعي وتنشط الوظيفه addone مع تمرير القيمة 6 إليها :
value=addone(6)
إذا في المثال
السابق يفترض أن تعيد الوظيفة قيمة تسند
الى المتغير value ولكن ، قد
لاتعيد الوظيفة قيمة ، بل تقوم
بطباعة شيء على الشاشة أو أي تنفيذ آخر ،
حينها يتم إستدعاء الوظيفة بالطريقة التاليه :
showit("hi
there")
في المثال السابق
تم تمرير القيمة Hi There الى الوظيفة showit ، ولم ينتج عن الوظيفة أية قيمة
، إذا ، كان الإستدعاء بدون إسناد القيمة
الى متغير آخر .
ينبغى ملاحظة
العديد من الأشياء هنا ، من بينها أن القيم
التي تعرف بداخل الداله لاتحمل قيمتها
في خارج الداله . والعكس غير صحيح . بالإضافة
الى أن القيم ستسند الى المتغير
الجديد في سطر تعريف الداله ، في الحالة
السابقة تم إسناد القيمة Hi There الى المتغير what في داخل الدالة فقط ، ولن يتم
التعامل مع المتغير بنفس القيمة في الخارج إلا
إذا تم إسناد القيمة إليه من الخارج ، وأيضا
في حالة تعريف المتغير في وسط الوظيفة
كمتغير محلى ، ولو كان المتغير معرف خارج
الوظيفة فسيتم التعامل معه من داخل
الوظيفة وخارجها . وستتغير قيمته من داخل
الوظيفة وخارجها .
بالإضافة لما سبق ،
قد يكون للمتغيرات المحلية نفس أسماء المتغيرات العامة . بالإعلان
عنها داخل وخارج الوظيفة ( يتم الإعلان عن
المتغيرات كما ذكرنا سابقا في درس آخر
بإستخدام الأمر var ) ، إذا يمكن
الإعلان عنها بالداخل والخارج
، وستكون كل الإشارات الى المتغيره وتغيير
قيمها بداخل الوظيفه لايغير قيمتها خارج الوظيفة .
وأخيرا ، يمكن
تضمين الوظائف العديد من الأوامر ، ويتم
إستدعائها متى إحتجت إليها
هناك
دوال تعطيها لك اللغة وهي دوال جاهزة لاجراء
عمليات معينه سوف نتعرض لها فيما بعد والدوال
الاخرى وهي الاكثر استخداما هي التي سوف
تنشئها انت بنفسك
function multi
(x , y)
{
var q ;
q = x * y;
return q;
}
هذه
الدالة يمرر اليها عددين وتقوم بحساب حاصل
ضربهم ثم تعيد النتيجة الى جزء البرنامج الذي
استدعى الدالة وهي بسيطة جدا بغرض التوضيح
ولكن يمكن ان تحتوي على عمليات حسابية معقدة
وكبيرة او قد تحتوي مربعات حوار او اي عمليات
يتم عملها بمجرد استدعاء اسم الدالة في اي جزء
من اجزاء البرنامج مع تمرير المتغيرات لها
اذا كانت مصممة لاستقبال متغيرات وفوائدها
تقليل كود البرنامج بدلا من اعادة كتابة
الكود كل مرة نرغب في عمل هذه العمليات .