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

نوشته‌شده در در دوره مقدماتی جاوا اسکریپت
Loading Likes...

اگر قبل از این با هر کدوم از زبان های برنامه نویسی کار کردید بدون شک با توابع آشنا هستید و میتونید خیلی سریع از این درس بگذرید. توابع در حقیقت یک بلاک از دستورات هستن در زمان اجرا شدنشون قراره کار خاصی رو برای ما  انجام بدن و از تکرار کردن کدها جلوگیری میکنن.

ما تو جاوا اسکریپت مثل خیلی از زبان های برنامه نویسی سطح بالا از واژه کلیدی function برای تعریف توابع استفاده میکنیم. قوانین نامگذاری توابع هم دقیقا مثل متغیرهاست و نام تابع معمولا با روش camelCase نوشته میشه به این ترتیب که تماما حروف کوچک هستند اما در صورت چند کلمه ای بودن، حرف اول  هر کلمه بصورت حروف بزرگ نوشته میشه.

تو سال ۲۰۱۸ ما درجاوا اسکریپت سه روش برای تعریف توابع داریم که هر کدوم در موقعیت های مختلف مزیت های نسبت به دیگری دارند که اونها رو مورد بررسی قرار میدیم:

Function Declaration

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

Syntax:

function nameOfFunction(arg1, arg2, ...argN) {
    // Code to be executed
}

مثال(برای مشاهده نتیجه روی سربرگ result کلیک کنید):

تو این کد ما یه تابع به اسم sayGreeting تعریف کردیم و در اون تابع آماده جاوا اسکریپت به اسم alert رو با رشته متنی Hello dev مشخص کردیم. در اینجا تابع با دستورات مربوطه تعریف شده اما اجرا نشده و آماده اجرا هست. در لاین های بعدی ما با ذکر اسم دقیق تابع تعریف شده دو بار اجراش کردیم که در نتیجه دو بار پیام Hello dev رو در مرورگر مشاهده میکنید.

 

مثال دوم: صدا زدن تابع قبل از جایی که تعریف شده

 

متغیرهای داخل تابع

خوب در قسمت متغیرها با با scope یا محدوده قابل دسترس متغیرها آشنا شدین. درخصوص کار با توابع این نکته رو باید بدونید که تمامی متغیرهایی که داخل بلاک تابع نوشته میشن از نوع local یا محلی هستن پس در خارج از محدوده بلاک قابل دسترس نیستند.

مثال(بخاطر وجود خطا در کد چیزی در خروجی نمیتونید ببینید):

 

 Parameters (پارامترها)

تو مثال بالا دیدید که ما فقط اسم تابع رو صدازدیم و اون در هر صورت فقط پیام Hello dev رو نمایش میده. حالا با استفاده از پارامترها مامیتونیم قابلیت های این تابع رو بیشتر و بصورت کلی انعطاف پذیری(flexibility) توابع رو بیشتر کنیم.

به این مثال توجه کنید:

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

 

 return (بازگشت)

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

بیاین مثال بالا رو با return بنویسیم:

تو اینجا ما رشته ای که باید نمایش داده بشه رو return میکنیم و میتونیم مقدار جدید رو تو alert استفاده کنیم. حالا این رشته میتونه هر جایی استفاده بشه پس بازم انعطاف پذیری برنامه رو بیشتر کردیم.

 

Function Expression

خوب ما تو قسمت function declaration چیزایی که مربوط به توابع در جاوا اسکریپت میشه رو گفتیم. اما در ابتدا گفته بودیم که سه روش برای تعریف یه تابع در جاوا اسکریپت هست. روش اول رو که در بالا دیدید. در روش دوم که اسمش function expression هست ما میایم تابع رو به یه متغیر اختصاص میدیم و با صدا زدن اون متغیر میتونیم تابع رو اجراکنیم. تفاوت اصلی function expression  با function declaration تو اینه که function declaration قبل از اینکه کدی اجرا بشه توسط مفسر اجرا میشه یعنی مهم نیست که تابع رو در کجای کدتون تعریف کنید اگر تابع رو در لاین ۳۰ تعریف کرده باشید میتونید در لاین۲۰ اون رو صدا بزنید و مشکلی وجود نداره اما در function expression تابع فقط بعد از زمانی که تعریف میشه در دسترس هست یعنی تابعی که در لاین ۳۰ تعریف کردید رو نمیتونید در لاین ۲۰ صدا بزنید.

Syntax:

var nameOfFunction = function (arg1, arg2, ...argN) {
    // Code to be executed
}

مثال:

در بقیه موارد هیچ فرقی با function declaration نداره پس از ارائه توضیحات تکراری خودداری میکنم.

Arrow Function Expression

ما یه روش کوتاه تر برای function expression داریم که در نسخه ES6 به بعد وجود داره و تقریبا یه روش جدیده که در خیلی از موارد که کار کوچیکی رو میخوایم انجام بدیم میتونه کمک کننده باشه. اسمش Arrow function هست چون در اون از کلمه کلیدی function استفاده نمیشه و بجاش <= میذاریم.

syntax:

let nameOfFunction = (arg1, arg2, ...argN) => expression

مثال:

همونطور که در مثال بالا میبینید نسبت به function expression کد کوتاه تر و تمیز تری داریم. همچنین در صورتیکه تعداد پارامترهاتون یکی هست میتونید پرانتز ها رو حذف کنید اما اکر هیچ پارامتری ندارید باید پرانتزهارو بذارید.

 

جمع بندی

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

 



سوالی دارید؟

بدون گرفتن نتیجه اینجا رو ترک نکنید! هر سوالی دارید میتونید در عرض ۱۵ ثانیه ثبت نام و خیلی زود جواب بگیرید.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

72 ÷ 18 =