تعریف تابع در جاوا اسکریپت
در برنامه نویسی، به تابع" زیر برنامه " گفته میشود. این زیر برنامه بصورت داخلی یا خارجی فراخوانی می شود، و به این حالت ها بازگشتی یا غیر بازگشتی بودن یک تابع گفته می شود. در داخل تابع ها چند خط کد وجود دارد، که بدنه ی آن را تشکیل می دهند. علت استفاده از تابع ها در برنامه نویسی، من جمله جاوا اسکریپت این است که، تابع ها معمولا مقداری را باز می گردانند و برای یک بار نوشته می شوند و ممکن است چندین بار صدا زده شده و استفاده شوند. یعنی استفاده از توابع می تواند از انجام یک عمل تکراری جلو گیری کند. در ادامه به بررسی بیشتر از توابع در آموزش جاوا اسکریپت خواهیم پرداخت.
چگونه تابع تعریف کنیم؟
در جاوا اسکریپت برای تعریف یک تابع از کلمه ی کلیدی function استفاده میکنیم. و روبروی آن نام تابع را قرار می دهیم. این نام میتواند ترکیبی از حروف، اعداد و زیر خط (underline) باشد
فراخوانی توابع
وقتی یک تابع فراخوانی یا صدا زده می شود در اصل ممکن است یکی از اتفاقات زیر برایش رخ دهد:
- با کلیک کاربر بر روی یک دکمه ( event )
- فراخوانی توسط کد های برنامه
- فراخوانی خودکار
تابع های غیر بازگشتی
اینگونه تابع ها هیچ مقداری را بر نمی گردانند و در ورودی هیچ مقداری را دریافت نمی کنند. به مثال زیر دقت کنید
1- Function Helloworld () {
2- Consol.log(“hi”); }
در مثال بالا و در خط اول یک تابع بنام helloworld ایجاد کردیم. سپس در بدنه ی آن یا همان خط دوم کلمه ی hi را با استفاده از کنسول چاپ کردیم. همانطور که مشخص است این تابع نه چیزی را از ورودی دریافت میکند و مقداری را هم بر نمیگرداند. برای فراخوانی این تابع خط زیر را در میان روال خطوط دیگر کد مینویسم. این کار را صدا زدن یک تابع می گویند.
Helloworld();
این تابع ها در جاوا اسکریپت، غیر متدی بوده ولی کاربردی هستند، اما نمی توان آنها را تابع های سازنده دانست. شما اگر مقدار این تابع را در یک متغیر قرار دهید، مقدار null یا تعریف نشده خواهد گرفت. مثلا اگر تابعی که در خط قبل نوشتیم را در متغیری بریزیم :
Message = helloworld();
این متغیر message مقدار تعریف نشده خواهد گرفت و هیچ مقداری درونش نیست، اگر آنرا چاپ کنید. البته برخی توابع در جاوا اسکریپت موجود هستند که پارامتری را از ورودی میگیرند اما بازهم مقداری را برنمی گردانند. و بطور مثال به صورت زیر نوشته می شوند:
Function fuc (message){
}
این تابع در پرانتر روبرویی خود متغیر message را گرفته است. میتوان به جای این متغیر عدد هم قرار داد.
توابع بازگشتی در جاوا اسکریپت
این توابع برعکس غیر بازگشتی ها مقداری را بر می گردانند، و دارای مقدار برگشتی هستند. همچنین در ورودی پارامتر(متغیر) دریافت می کنند. مثال:
Function m_s(var x, var y) {
Return x*y; }
که در این مثال تابع m_s دو عدد را از ورودی دریافت می کند و با هم ضرب می کند. این متغیر ها می توانند از قبل تعریف شوند یا حتی در زمان تعریف به عنوان آرگومان های یک تابع در پرانتز جلوی آن معرفی شوند. بعد از تعریف تابع؛ در هر کجا که لازم بود این تابع را صدا می زنیم. مانند خط پایین:
Console.log(m_s(3,4));
تابع ها را می توان به یک متغیر نسبت داد، و آن متغیر را به عنوان یک پارامتر برای تابع دیگری ارسال کرد. تابع ها می توانند n پارامتر را از ورودی دریافت کند. این پارامتر ها در زمان صدا زدن و یا فراخوانی شدن میتوانند یک یا هر مقداری که برای آنها تعریف کرده اید ورودی دریافت کنند و لزومی ندارد که حتما تا مقداری که تعریف کرده اید، به آن آرگومان تحویل دهید. همچنین شما نمی توانید هیچ متدی از هیچ آرایه ای را روی آرگومان ها فراخوانی کنید. به این صورت، در جاوا اسکریپت می توانید هر تعداد که خواستید تابع تعریف کنید و از نوشتن کد های تکراری جلوگیری کنید.