کار با توابع یا Functions در جاوا اسکریپت

سلام خدمت تمامی دوستان و همراهان محترم سایت آموزشی فری لرن ، امیدوارم که حال همگیتون خوب باشه. لطفا در ادامه با آموزش کار با توابع یا Functions در جاوا اسکریپت با من همراه باشید.

کار با توابع یا Functions در جاوا اسکریپت

Free-Learn

کار با توابع یا Functions در جاوا اسکریپت

خب اصلا تابع چیه؟ و به چه درد میخوره؟ ببینید دوستان بطور کلی به مجموعه ای از کدها در کنار هم، که قراره یه کار خاصی رو انجام بدن میگیم تابع .

خب حالا به چه درد میخوره؟ از مهمترین مزایای تابع نویسی میتونیم به بالارفتن سرعت و خوانایی برنامه ، جلوگیری از اجرای کدهای تکراری و در نهایت داشتن کدنویسی تمیز اشاره کرد.

بفرض مثال من میخوام چندین متغیر رو باهمدیگه جمع کنم، خب در حالت عادی و بدون استفاده از تابع میایم مثلا چنتا متغیر با مقدار مشخص تعریف میکنیم و بعدش متغیرهارو با همدیگه جمع میکنیم. ( چیزی شبیه به دستورات زیر )

خب حالا فکرشو کنید شاید بخوایم ۱۰۰۰ تا عدد رو باهم جمع کنیم خب اونوقت باید چکار کرد، میتونیم همانند دستورات بالا عمل کنیم ولی خب میدونید چقد حجم برناممون میره بالا

اینجاست که تابع بدردمون میخوره و میتونه از استفاده تکراری ( همینکه بخوایم تعداد زیادی متغیر تعریف و مقدار بدیم بهشون ) دستورات جلوگیری کنه در نتیجه سرعت اجرای برناممون رو بالا ببره.

Free-Learn

نحوه تعریف تابع در جاوااسکریپت

برای ایجاد یا تعریف یک تابع در جاوااسکریپت ما باید از کلمه کلیدی function استفاده نماییم بعدش نام تابع مون رو مشخص کنیم و در نهایت یه پرانتز باز و بسته ایجاد کنیم.

که توی این پرانتز هم اگه بخوایم میتونیم پارامترهای دلخواه مون رو برای تابع مشخص و یا تعریف نماییم، و در نهایت باید براکت } باز و براکت { بسته رو بنویسیم.

در آخرم هرچی داخل این براکت { } نوشته شه میشه تابع ما که قرار اجرا بشه، شکل کلی یه تابع رو میتونیم بصورت زیر نمایش دهیم :

Free-Learn

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

در ادامه ی آموزش کار با توابع یا Functions در جاوا اسکریپت میخوایم ببینیم یک تابع بدون پارامتر به چه شکل هست، خب مشخصه دیگه ، وقتی داخل پرانتز هیچ پارامتری نباشه برای مقدار گرفتن، میشه تابع بدون پارامتر.

مثال : تعریف یک تابع بدون پارامتر

Free-Learn

تعریف تابع با پارامتر

ما میتونیم به راحتی داخل پرانتز به دلخواه خودمون پارامتر تعریف کنیم و در خروجی از همون پارامترها استفاده نماییم، مثلا در دستورات زیر ۲ تا پارامتر بنام های name و family تعریف کردیم، بعدش در خروجی میتونیم به راحتی مقدار این پارامترهارو از کاربر دریافت نماییم.

مثال : تعریف یک تابع با پارامتر

Free-Learn

متغیرهای محلی یا Local Variables در توابع

اگه آموزش کار با متغیرها در جاوا اسکریپت رو دنبال کرده باشید میدونید که جریان متغیرهای محلی چیه ( پیشنهاد میکنم حتما آموزش کار با متغیرها یا Variables در جاوااسکریپت رو مشاهده نمایید )

متغیرهایی که درون یک تابع تعریف میشوند بصورت محلی یا لوکال یا Local هستند، یعنی اون متغیرها فقط درون همون تابع قابل دسترسی هستند، یعنی بیرون از تابع به اون متغیرها نمیشه دسترسی داشت؛ همین تموم شد رفت.

امتحان کنید

Free-Learn

نحوه فراخوانی یا اجرای یک تابع

خب ما مثلا در مثال های قبلی تابع نوشتیم، حال باید چجوری این تابع رو اجراش کنیم؟ یعنی برای اجرا یا فراخوانی یا صدازدن یه تابع باید چکار کنیم؟

چندین روش برای اجرا ( فراخوانی یا صدا زدن یا Call ) یه تابع وجود داره :

  • استفاده از تابع در رویدادهای عمومی HTML ( مثلا وقتی بروی یه دکمه کلیک شد )
  • فراخوانی یا اجرای تابع بصورت مستقیم در دستورات جاوااسکریپت

مثال شماره ۱ : فراخوانی تابع در رویدادهای عمومی HTML ( یعنی میخوایم وقتی بروی یه دکمه کلیک شد تابع اجرا بشه )

امتحان کنید

مثال شماره ۲ : فراخوانی تابع بصورت مستقیم در خوده دستورات جاوااسکریپت ( تو این حالت دیگه لازم نیست حتما بروی چیزی کلیک شه، بلکه با لود شدن صفحه تابع هم درجا اجرا میشه )

امتحان کنید

Free-Learn

پارامتر ها و آرگومان ها در توابع

بنظره شما پارامتر یا Parameter و آرگومنت ( یا خودمونی آرگومان ) یا Argument در توابع به چه چیزهایی گفته میشه؟ یعنی بطور کلی میخوایم ببینیم پارامترها و آرگومان ها چی هستند!؟

خب بطور کلی به اون چیزی که درون پرانتز تابع تعریف میشود و میتونه عملی ( کاری ) رو انجام بده میگیم پارامتر و به مقداری که باید برای همین پارامتر وارد میشود میگیم آرگومان.

 

مثال : تابعی که ۲ عدد میگیرد و آنها را با هم جمع میکند.

امتحان کنید

توضیح مثال بالا :

خب ما در خط ۳ یه تابع با نام jame ( به فارسی یعنی جمع ) و با ۲ پارامتر با نام های Number1 و Number2 تعریف کردیم. بعدش داخل تابع عملیات مورد نظرمون رو وارد کردیم.( یعنی گفتیم ۲ پارامتر با هم جمع بشن و نتیجش داخل متغیر result ریخته شه و در نهایت گفتیم مقدار result رو در خروجی چاپ کنه )

و در آخر در خط ۸ اومدیم تابع رو صدا زدیم ( یا فراخوانی کردیم ) و ۲ آرگومان ( برای همون ۲ پارامتر Number1 و Number2 ) بهش دادیم.

تموم شد رفت به این میگن تابع تعریف کردن ، حالا شما بجای اون ۲ عدد، هر عددی دوس داری وارد کن، در هر صورت تابع اون ۲ عدد رو با هم جمع میکنه و در خروجی نمایشش میده.

Free-Learn

کلمه کلیدی Return در توابع

یه کلمه کلیدی بنام Return ( به فارسی یعنی بازگشت/ برگشتی ) داریم که میتونه یه مقدار رو در تابع به خروجی برگشت بده ، یعنی بطور کلی میگه آقا تو این فلان مقدار رو به خروجی برای نمایش بده.

فرض میکنیم تابعی داریم برای محاسبه حاصل جمع ۲ عدد ( یعنی دقیقا همون مثالی که کمی بالاتر دیدیم )، خب در حالت عادی ما باید تابع رو تعریف کنیم بعدش حاصل جمع رو درون یه متغیر نگهداری و در نهایت اونو در خروجی چاپ کنیم. ( یعنی بصورت زیر میشه )

ولی اگه بخوایم از کلمه کلیدی Return استفاده کنیم، دیگه نیاز نیست حتما بیایم و حاصل جمع رو بزاریم داخل یه متغیر، بلکه خیلی راحتتر و سریع نتیجه رو به خروجی میفرستیم.

مثال شماره ۱ : بازگشت دادن ۲ پارامتر به خروجی برای محاسبه حاصل جمع

امتحان کنید

مثال شماره ۲ : بازگشت دادن یه تابع درون تابع دیگر با استفاده از کلمه کلیدی Return

امتحان کنید

توضیح مثال بالا :

خب ما در خط ۳ یه تابع با نام t1 و پارامتر Number1 ، بعدش داخل همین تابع یه تابع دیگه بنام t2 و پارامتر Number2 تعریف کردیم.

بعد در خط ۶ اومدیم گفتیم بازگشت بده حاصل جمع Number1 و Number2 رو ، و در نهایت در خارج از تابع t2 و در داخل تابع t1 ، گفتیم که تابع t2 رو بازگشت بده به خروجی ( یعنی میشه نتیجه حاصل جمع )

در نهایت در خط ۱۲ یه متغیر بنام result تعریف کردیم و مقدار پارامتر تابع t1 رو بهش دادیم ( یعنی این میشه عدد اول ) و در ادامه یسری متغیر دیگه تعریف کردیم که هر کدوم میتونن با عدد اول جمع بشن ( یعنی اعداد بیشتر برای جمع کردن با اون عدد اول )

Free-Learn

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

ما میتونیم در جاوااسکریپت تابع رو در درون یک متغیر نیز تعریف کنیم، یعنی در واقع مثه اینه که تابع رو بریزیم تو یه متغیر و بعد دیگه میتونیم همون متغیر رو فراخوانی و در خروجی نشونش بدیم.

مثال شماره ۱ : تعریف یک تابع بدون نام ( چون میخوایم بریزیمش تو متغیر پس میتونه نام نداشته باشه )

امتحان کنید

توضیح مثال بالا :

در خط ۳ اگه توجه کنید، تابع ما نام نداره، خب بله چون تابع رو ریختیم تو متغیر ، پس تابع میتونه نام نداشته باشه و دیگه بصورت مستقیم از طریق همون نام متغیر میتونیم به تابع دسترسی داشته باشیم.

Free-Learn

نحوه تعریف توابع تودرتو در جاوااسکریپت

در زبان جاوااسکریپت میتونیم توابع رو بصورت تودرتو ( یعنی یه تابع داخل یه تابع دیگه ) تعریف کنیم، و همیشه تابع هایی که ایجاد میشن به سطح بالاترشون ( یعنی بالا دستشون ) دسترسی دارند ولی تابع مادر نمیتونه به تابع های داخل خودش ( پایین دست ) دسترسی داشته باشه.

مثال شماره ۱ : ایجاد یک تابع در درون یه تابع دیگه

امتحان کنید

توضیح مثال بالا :

خب ما در خط ۳ تابعی با نام ShowMessage تعریف کردیم با ۲ پارامتر name و family

بعدش تابعی دیگر با نام show ایجاد کردیم و در داخل این تابع پارامترهای تابع بالادستی ( یا تابع مادرش ) رو فراخوانی و ازشون استفاده کردیم و در نهایت مقدار تابع show رو بازگشت دادیم به خروجی.

Free-Learn

دریافت PDF یا پرینت این مطلب