آموزش ویژگی های ECMAScript 6 (جلسه 8) : مقدار پیش فرض برای پارامتر



visibility  
mode_comment   ۲

همونطور که اطلاع دارید در جلسه قبل در مورد Arrow function ها توضیحاتی رو قرار دادیم و شما رو با اونا آشنا کردیم. در این جلسه قصد داریم در مورد Default Parameter یا تعیین مقدار پیش فرض برای پارامترها توضیح بدیم. کد زیر رو در نظر بگیرید:

همونطور که میبینید در ابتدا یک تابع بنام multiply تعریف کردیم و این تابع 2 پارامتر a و b رو دریافت میکنه و حاصلضرب اونا رو به ما تحویل میده. در خط 5 این تابع رو با دو ورودی یا آرگومان 5 و 2 صدا زدیم و در نتیجه مقدار 10 در Console چاپ میشه. اما در خط 6 فقط یک ورودی رو برای تابع در نظر گرفتیم و مقدار پارامتر b رو مشخص نکردیم. در اینجا چیزی که در Console چاپ میشه مقدار NaN است. در این حالت a برابر با 5 هست و b هم undefined هست، حاصلضرب اونا یک عدد نیست و نامعتبر است و به همین دلیل مقدار NaN یا Not a Number در Console چاپ میشه. پس در این مواقع هست که مجبور میشیم از مقادیر پیش فرض برای پارامترها استفاده کنیم تا زمانی که مقداری برای اونا به عمد یا سهوا در نظر نگرفتیم، مقدار پیش فرض بعنوان جایگزین مورد استفاده قرار بگیره.

متخصص وردپرس
قالب ها و پلاگین های حرفه ای وردپرس رو خودت بنویس! بازار طراحی قالب و پلاگین نویسی وردپرس به شدت داغه و اگر بلد باشید با برنامه نویسی اختصاصی، قالب ها و پلاگین های دلخواه بنویسید تو مارکت های مطرح دنیا و یا از طریق فریلنسری می تونید به درآمد بالا برید. دوره متخصص وردپرس سون لرن رو حتما ببینید: متخصص وردپرس arrow_back

در گذشته و قبل از اینکه ES6 منتشر بشه، برای اینکه برای یکی از پارامترهای توابع، مقدار پیش فرضی قرار بدیم، در ابتدا باید درون بدنه تابع بررسی میکردیم که مقدار اون پارامتر undefined هست یا خیر و اگر undefined بود، مقدار پیش فرض مورد نظرمون رو برای اون قرار بدیم. بصورت زیر:

همونطور که در خط 2 مشاهده میکنید، در ابتدا بررسی شده که مقدار پارامتر b برابر با undefined هست یا خیر. اگر undefined نبود، مقدار b تغییری نمیکنه و خودش باقی میمونه، اما اگر مقدار اون undefined باشه، خودمون مقدار پیش فرض 1 رو برای اون قرار میدیم. کد بالا رو میتونیم خلاصه تر بکنیم و بصورت زیر در میاد:

خب با اینکار یک مقدار پیش فرض برای پارامتر b قرار دادیم. در خط 6 تابع رو صدا زدیم و 2 ورودی رو برای اون قرار دادیم، پس در اینجا از مقدار پیش فرض استفاده نمیشه و مقدار 10 برمیگرده. اما در خط 7 به دلیل اینکه مقدار پارامتر b رو مشخص نکردیم، از مقدار پیش فرض که همون 1 هست استفاده میشه و مقدار 5 * 1 که همون 5 میشه، برگشت داده میشه.

اما در ES6 کار خیلی راحتتر شده و دیگه نیازی به این کدهای اضافه نیست و به راحتی میتونیم بصورت زیر عمل کنیم:

همونطور که میبینید بصورت مستقیم مقدار پارامتر b رو برابر با 1 قرار دادیم. با اینکار خروجی همانند قبل خواهد شد. در این زمینه قابلیتهای دیگه ای وجود داره که میتونین ازشون بهره ببرید. در کد بالا ما یک عدد رو بعنوان مقدار پیش فرض قرار دادیم. اعداد و رشته ها و ... از نوع Primitive هستند. شما میتونین علاوه بر این موارد از چیزای دیگه هم استفاده کنید. مثلا میتونین یک تابع رو اجرا کنید و مقدار برگشتی اون رو برابر با مقدار پیش فرض پارامتر مورد نظر قرار بدین. کد زیر رو در نظر بگیرید:

همونطور که دیدید مقدار پارامتر b رو برابر با مقدار برگشتی تابع getValue قرار دادیم و این تابع نیز مقدار 1 رو برگشت میده. پس خروجی همانند کدهای قبل میشه.

بزارید یک مثال حرفه ای تر رو با هم بررسی کنیم. ما میتونیم مقدار پارامترهای قبلی رو برای پارامترهای بعدی قرار بدیم. کد زیر رو در نظر بگیرید:

همونطور که میبینید مقدار پیش فرض پارامتر b رو برابر با پارامتر a قرار دادیم. با اینکار، زمانی که تابع رو همانند خط 6 فقط با یک ورودی صدا میزنیم، پارامتر دوم هم برابر با همین مقدار 5 قرار میگیره و در نتیجه مقدار عبارت 5 * 5 برابر با 25 برگشت داده میشه.

یه نکته که باید در نظر بگیرید اینه که اون پارامترهایی که مقدار پیش فرض دارند رو در آخر قرار بدین و حق ندارید که اونا رو در ابتدا بیارید. بهمین راحتی مقدار پیش فرض رو برای پارامترها قرار میدیم.

موفق و پیروز باشید.

یا علی

comment دیدگاه کاربران
hamid7n

سلام و دمت گرم آقا محمد اسفندیاری گل مطلب بی نظیر بود.

محمد اسفندیاری

خواهش میکنم
موفق باشید دوست عزیز

ارسال نظرات

کاربر گرامی، امکان ارسال نظر و پشتیبانی برای دوره های مجازی فقط برای دانشجویان این دوره امکان پذیر می باشد.