آموزش جاوا اسکریپت مبتدی : مقادیر برگشتی تابع
یک مفهوم اساسی دیگر در مورد توابع وجود دارد که باید در مورد آن بحث کنیم - مقدارهای برگشتی. برخی از توابع مقدار قابل توجهی را بر نمیگردانند، اما برخی دیگر این کار را میکنند. درک مقادیر آنها، نحوه استفاده از آنها در کد و نحوه ایجاد توابعی که مقادیر مفیدی را برگردانند، مهم است. در ادامه به همه این موارد خواهیم پرداخت.
مقادیر بازگشتی دقیقاً همان چیزی هستند که از نامشان پیداست - مقادیری که یک تابع پس از اتمام کار برمیگرداند. شما قبلاً چندین بار با مقادیر بازگشتی مواجه شدهاید، اگرچه ممکن است به صراحت در مورد آنها فکر نکرده باشید.
بیایید به یک مثال آشنا (از مقاله قبلی در این مجموعه) برگردیم:
تابع روی رشته myText فراخوانی میشود و دو پارامتر به آن ارسال میشود:
- زیررشتهای که باید پیدا شود ("cold").
- رشتهای که باید با آن جایگزین شود ("warm").
وقتی تابع اجرا میشود (اجرای آن تمام میشود)، یک مقدار برمیگرداند که یک رشته جدید با جایگزینی انجام شده است. در کد بالا، نتیجه این مقدار برگشتی در متغیر newString ذخیره میشود.
اگر به صفحه مرجع تابع در PDN نگاه کنید، بخشی به نام را خواهید دید. دانستن و درک اینکه چه مقادیری توسط توابع برگردانده میشوند بسیار مفید است، بنابراین سعی میکنیم این اطلاعات را در هر کجا که ممکن است، لحاظ کنیم.
بعضی از توابع هیچ مقداری برنمیگردانند. (در این موارد، صفحات مرجع ما مقدار برگشتی را به صورت void یا undefined فهرست میکنند.) به عنوان مثال، در تابع که در مقاله قبلی ساختیم، هنگام فراخوانی تابع، هیچ مقدار خاصی برگردانده نمیشود. فقط باعث میشود یک کادر در جایی از صفحه نمایش ظاهر شود - همین!
به طور کلی، مقدار بازگشتی زمانی استفاده میشود که تابع، یک مرحله میانی در نوعی محاسبه باشد. شما میخواهید به یک نتیجه نهایی برسید که شامل مقادیری است که باید توسط یک تابع محاسبه شوند. پس از اینکه تابع مقدار را محاسبه کرد، میتواند نتیجه را برگرداند تا بتوان آن را در یک متغیر ذخیره کرد؛ و شما میتوانید از این متغیر در مرحله بعدی محاسبه استفاده کنید.
برای برگرداندن یک مقدار از یک تابع سفارشی، باید از کلمه کلیدی return استفاده کنید. ما این را اخیراً در مثال خود در عمل دیدیم. تابع ما ۱۰۰ دایره تصادفی را در جایی از HTML رسم میکند:
درون هر تکرار حلقه، سه فراخوانی به تابع انجام میشود تا به ترتیب یک مقدار تصادفی برای مختصات x، مختصات y و شعاع دایره فعلی تولید شود. تابع یک پارامتر - یک عدد صحیح - میگیرد و یک عدد صحیح تصادفی بین 0 و آن عدد را برمیگرداند. این تابع به این شکل است:
این را میتوان به صورت زیر نوشت:
اما نسخه اول سریعتر نوشته میشود و فشردهتر است.
ما هر بار که تابع فراخوانی میشود، نتیجه محاسبه
را برمیگردانیم. این مقدار بازگشتی در نقطهای که تابع فراخوانی شده است، ظاهر میشود و کد ادامه مییابد.
بنابراین وقتی کد زیر را اجرا میکنید:
اگر سه فراخوانی به ترتیب مقادیر ۵۰۰، ۲۰۰ و ۳۵ را برگردانند، خط در واقع طوری اجرا میشود که انگار به صورت زیر است:
ابتدا فراخوانیهای تابع در خط اجرا میشوند و مقادیر بازگشتی آنها جایگزین فراخوانیهای تابع میشوند، قبل از اینکه خود خط اجرا شود.
پیادهسازی مقادیر بازگشتی تابع
بیایید نوشتن چند تابع با مقادیر بازگشتی را امتحان کنیم.
یک کپی محلی از کد زیر در فایلی به نام ایجاد کنید. این یک صفحه HTML ساده است که شامل یک فیلد متنی و یک پاراگراف است. همچنین یک عنصر وجود دارد که در آن ارجاعی به هر دو عنصر HTML را در دو متغیر ذخیره کردهایم. این صفحه به شما امکان میدهد یک عدد را در کادر متن وارد کنید و اعداد مختلف مرتبط با آن را در زیر نمایش دهید.
توابع و کاملاً واضح هستند - آنها مربع یا مکعب عددی را که به عنوان پارامتر داده شده است، برمیگردانند. تابع فاکتوریل عدد داده شده را برمیگرداند.
با اضافه کردن کنترلکننده رویداد زیر در زیر توابع موجود، راهی برای چاپ اطلاعات مربوط به عدد وارد شده در ورودی متن اضافه کنید:
کد خود را ذخیره کنید، آن را در مرورگر بارگذاری کنید و آن را امتحان کنید.
در اینجا چند توضیح برای تابع در مرحله 3 بالا آمده است:
با اضافه کردن یک شنونده رویداد change، این تابع هر زمان که رویداد change روی ورودی متن فعال شود، اجرا میشود - یعنی زمانی که یک مقدار جدید در ورودی متن وارد شده و ارسال میشود (یک مقدار وارد کنید، سپس با فشار دادن Tab یا Return، فوکوس ورودی را از حالت فشرده خارج کنید). هنگامی که این تابع ناشناس اجرا میشود، مقدار ورودی در ثابت num ذخیره میشود.
اگر مقدار وارد شده عدد نباشد، دستور if یک پیام خطا چاپ میکند. شرط بررسی میکند که آیا عبارت مقدار true را برمیگرداند یا خیر. تابع بررسی میکند که آیا مقدار num عدد نیست یا خیر - اگر چنین باشد، مقدار true را برمیگرداند و اگر نه، مقدار false را برمیگرداند.
اگر شرط false را برگرداند، مقدار num یک عدد است و تابع جملهای را در داخل عنصر پاراگراف چاپ میکند که مقادیر مربع، مکعب و فاکتوریل عدد را بیان میکند. این جمله توابع ، و را برای محاسبه مقادیر مورد نیاز فراخوانی میکند.
چند تا تابع خودت اضافه کن!
در این مرحله، از شما میخواهیم که چند تابع خودتان را بنویسید و به کتابخانه اضافه کنید. در مورد جذر یا مکعب عدد چطور؟ یا محیط دایرهای با شعاع مشخص چطور؟
چند نکته اضافی مربوط به تابع:
به مثال دیگری از نوشتن مدیریت خطا در توابع نگاه کنید. به طور کلی ایده خوبی است که بررسی کنید آیا پارامترهای لازم اعتبارسنجی شدهاند و آیا پارامترهای اختیاری مقداری پیشفرض دارند یا خیر. به این ترتیب، احتمال بروز خطا در برنامه شما کمتر خواهد شد.
به ایده ایجاد یک کتابخانه تابع فکر کنید. هرچه در حرفه برنامهنویسی خود پیشرفت میکنید، بارها و بارها شروع به انجام کارهای مشابه خواهید کرد. ایده خوبی است که کتابخانه توابع کاربردی خودتان را برای انجام این نوع کارها ایجاد کنید. میتوانید آنها را در کد جدید کپی کنید یا حتی آنها را در صفحات HTML در هر کجا که به آنها نیاز دارید اعمال کنید.