در جلسه هشتم از آموزش جاوا اسکریپت قصد داریم مبحث فانکشنها و توابع را در این زبان برنامهنویسی ادامه دهیم و نکات بیشتری را در خصوص این موضوع در اختیار شما قرار دهیم. برای این کار ویژوال استودیو کد را اجرا کرده و لایو سرور را نیز اجرا میکنیم و آماده ادامه این موضوع خواهیم شد.
مقدار بازگشتی
مقدار بازگشتی در توابع در زبان برنامهنویسی جاوا اسکریپت
اگر از جلسه قبل آموزش جاوا اسکریپت بهخاطر داشته باشید حتما میدانید که ما کدهای زیر را نوشتیم و از آنها اجرا گرفتیم:
function findBiggestFraction (a, b){
a>b ? console.log(“ a:” + a) : console.log(“b: “ + b);
}
var firstFraction = 3/4 ;
var secondFraction = 5/7 ;
findBiggestFraction(firstFraction, secondFraction);
اگر اشارهگر موس خود را روی تابعی که نوشتهایم نگه دارید مشاهده میکنید که جنس این تابع از نوع void است. void به معنای فارسی یعنی پوچ، خالی یا هیچی است. دلیل این موضوع چیست؟ تابعی که ما تعریف کردهایم یک عملیات مشخص را انجام میدهد و چیزی را به ما برنمیگرداند یا اصطلاحا مقدار بازگشتی ندارد. به همین علت نیز ما به این توابع که مقدار بازگشتی ندارند void میگوییم. حال ممکن است این سوال پیش بیاید که توابعی که مقدار بازگشتی دارند به چه شکل هستند؟ برای یافتن پاسخ این سوال در ادامه این جلسه از آموزش جاوا اسکریپت رایگان با ما همراه باشید.
function findBiggestFraction (a, b){
var result;
a>b ? result = [“ firstFraction”, a]: result = [“secondFraction”, b];
return result;
}
var firstFraction = ¾ ;
var secondFraction = 5/7 ;
var newResult = findBiggestFraction(firstFraction, secondFraction);
console.log(newResult);
حال اگر موس خود را روی این تابع نگه دارید مشاهده میکنید که این تابع دیگر void نخواهد بود و یک مقدار بازگشتی از نوع آرایه را به شما برمیگرداند. ما برای برگرداندن یک مقدار در تابع میتوانیم از کلمه کلیدی return استفاده کنید که به همین منظور در زبان برنامهنویسی جاوا اسکریپت قرار داده شده است. با اجرای قطعه کد بالا مشاهده میکنید که مقدار secondFraction برای شما نمایش داده میشود. این مقدار در واقع همان مقدار بازگشتی از تابع است که ما در خارج از تابع آن را دریافت کرده و سپس اقدام به چاپ کردن آن کردهایم. نکته بسیار جالبی که باید در خصوص این موضوع بدانید این است که شما میتوانید مقدار برگشتی را در هیچ متغیری نریزید و آن را بهصورت مستقیم چاپ کنید که برای این کار میتوانید از قطعه کد زیر کمک بگیرید:
console.log(findBiggestFraction(firstFraction, secondFraction));
با اجرای این قطعه کد نیز همان خروجی برای شما چاپ میشود که نشاندهنده عملکرد یکسان این دو قطعه کد است.
درک بهتر کدها
درک بهتر خروجی کدهای بالا
در این بخش از آموزش جاوا اسکریپت قصد داریم توضیحات خود درباره توابع را در این زبان برنامهنویسی تکمیل کنیم. در بخش قبلی ما موفق شدیم یک نظم و سازوکاری را برای تابع خود تعریف کنیم که یک یا چند مقدار ورودی دریافت کرده، عملیاتی را روی آنها انجام میدهد و بر اساس آن عملیات یک مقدار خروجی را نیز به ما برمیگرداند. حال قصد داریم این تابع خود را برای کاربری که داریم قابلفهمتر کنیم. برای این کار قطعه کد زیر را مینویسیم:
function findBiggestFraction (a, b){
var result;
a>b ? result = [“ firstFraction”, a]: result = [“secondFraction”, b];
return result;
}
var firstFraction = 3/4;
var secondFraction = 5/7 ;
var newResult = findBiggestFraction(firstFraction, secondFraction);
console.log(“Fraction” + result[0] + “ with a value: “ + result[1] + “ is the biggest”);
به این ترتیب کاربر میتواند به شکل بهتری خروجی کدهای شما را بخواند و درک بهتری از کدهای شما و نحوه اجرای آنها به دست بیاورد.
نکات مهم
نکات مهم درباره توابع در جاوا اسکریپت
یکی از نکات بسیار مهمی که باید در این جلسه از آموزش جاوا اسکریپت به آن دقت داشته باشید این است که توابع در این زبان برنامهنویسی میتوانند مقادیر بازگشتی مختلف داشته باشند. بهعنوانمثال تابع ما میتواند یک عدد، یک مقدار بولین، یکرشته یا یک object را برگرداند. نکته مهم دیگری که باید در این جلسه از آموزش جاوا اسکریپت به زبان ساده به آن دقت کنید این است که تمامی این توابع که در بخش قبلی و تا به اینجای جلسه فعلی درباره آنها صحبت کردیم named function هستند. اینها توابعی هستند که دارای یک نام هستند و زمانی که آنها را تعریف میکنیم اجرا نمیشوند. این توابع تنها زمانی اجرا میشوند که با استفاده از نامی که برایشان تعریف کردهایم آنها را فراخوانی کنیم.
دسته دیگری از توابع که در زبان برنامهنویسی جاوا اسکریپت وجود دارند و ما در این جلسه از آموزش javascript قصد صحبتکردن درباره آنها را داریم anonymous functionها هستند که خودشان نامی ندارند بلکه باید آنها را در داخل یک متغیر را در داخل یک رویداد تعریف کرده و سپس از این طریق از آنها استفاده کنیم که در ادامه بیشتر درباره این موضوع صحبت خواهیم کرد.
anonymous function ها
آشنایی با anonymous function ها در زبان برنامهنویسی جاوا اسکریپت
بهعنوان یک نمونه بسیار کاربردی از این دسته از توابع در زبان برنامهنویسی جاوا اسکریپت فرض کنید قصد داریم همان تابعی که در بخشهای قبلی تعریف کردیم را با استفاده از anonymous functionها تعریف کرده و از آنها استفاده کنیم. برای انجام این کار قطعه کد زیر را در نظر بگیرید:
var theBiggest = function(a,b){
var result;
a>b ? result = [“ a”, a]: result = [“b”, b];
return result;
}
console.log(theBiggest(7/9 , 13/25);
دقت داشته باشید که اگر بخواهید تابع anonymous که تعریف کردهاید را فراخوانی کنید باید نام متغیری که این تابع را در داخل آن قرار دادهاید فراخوانی کنید. با اجرای قطعه کد بالا مشاهده میکنید که خروجی 7/9 برای شما چاپ میشود که دقیقا خروجی درست است. در خصوص تعریف این توابع در داخل رویدادها در جلسات آینده بیشتر صحبت خواهیم کرد و تلاش میکنیم اطلاعات کاملی را درباره این موضوع در اختیار شما قرار دهیم.
نکته دیگری که باید درباره این توابع بدانید این است که بهعنوانمثال اگر در قطعه کد بالا متغیر theBiggest را بدون مقداردهی اولیه و ارائه پارامترهای موردنیاز فراخوانی میکردیم مشاهده میکردیم که کدهایی که برای آن تابع نوشتهایم برای ما پرینت میشوند. دلیل این موضوع این است که ما این تابع را بهصورت یک فانکشن فراخوانی نکردهایم و صرفا خود متغیر را لاگ کردهایم. پس حتما باید به این نکته دقت داشته باشید که اگر متغیر را بهتنهایی صدا بزنید مقدار داخل آن یعنی کدهای ما را چاپ میکند و ما حتما باید مقادیر اولیه و پرانتزها را قرار دهیم تا تابع داخل آن اجرا شود.
حال که با نحوه استفاده از این توابع در زبان برنامهنویسی جاوا اسکریپت آشنا شدیم اجازه دهید تا با immediately invoked functionها نیز آشنا شویم.
immediately invoked functionها
آشنایی با immediately invoked functionها
در این بخش از آموزش جاوا اسکریپت قصد داریم کمی بیشتر درباره immediately invoked functionها صحبت کنیم که یکی دیگر از انواع توابع مهم در این زبان برنامهنویسی به شمار میآیند و آشنایی با آنها میتواند به میزان زیادی برای شما مفید و کاربردی باشد. immediately invoked functionها توابعی هستند که در همان لحظهای که آنها را تعریف میکنید اجرا میشوند. در واقع زمانی که مفسر این زبان به قطعه کد مربوطه میرسد در حین خواندن تابع آن را اجرا میکند. بهعنوانمثال اگر بخواهیم تابعی که در بخشهای قبلی نوشته بودیم را با استفاده از این دسته از توابع پیادهسازی کنیم کدهای ما به شکل زیر خواهند بود:
var theBiggest = (function(a,b){
var result;
a>b ? result = [“ a”, a]: result = [“b”, b];
return result;
})(7/9, 13/25)
console.log(theBiggest);
حال اگر مقدار متغیر theBiggest را چاپ کنیم مشاهده میکنیم که مقدار تابع درستی برای ما چاپ میشود و دیگر نیازی نیست که در زمان فراخوانی نیز پارامترهای اولیه را به آن بدهیم.
قسمت قبلی آموزش رایگان جاوا اسکریپت:
قسمت بعدی آموزش رایگان جاوا اسکریپت:
آشنایی با متغیر های لوکال و گلوبال
یا جهت مشاهده ویدیوهای اموزشی آموزش رایگان جاوا اسکریپت وارد این صفحه شوید