پارامترهای پیشفرض JavaScript

گردآوری و تالیف : عرفان کاکایی
تاریخ انتشار : 08 شهریور 1397
دسته بندی ها : جاوا اسکریپت

کد زیر را در نظر بگیرید:

function getCandy(kind, size, upperKind, callback) {
  if (!kind) {
    requiredParam('kind')
  }
  if (!size) {
    requiredParam('size')
  }
  upperKind = upperKind || kind.toUpperCase()
  callback = callback || function noop() {}
  const result = {kind, size, upperKind}
  callback(result)
  return result
}
function requiredParam(argName) {
  throw new Error(`${argName} is required`)
}

این کد کاملا ساده است، اما برخی باگ‌های احتمالی و boilerplateهای آزار دهنده در آن وجود دارند. خوشبختانه، ES6 سینتکس جدیدی به نام پارامترهای پیشفرض در JavaScript معرفی کرده است که می‌توانید برای ساده‌سازی کد از آن استفاده کنیم. بیایید ببینیم که نوشتن کد بالا به همراه این ویژگی چگونه خواهد بود.

function getCandy(
  kind = requiredParam('kind'),
  size = requiredParam('size'),
  upperKind = kind.toUpperCase(),
  callback = function noop() {},
) {
  const result = {kind, size, upperKind}
  callback(result)
  return result
}
function requiredParam(argName) {
  throw new Error(`${argName} is required`)
}

دقت کنید که ما می‌توانیم هر عبارت را بگیریم و آن را در سمت راست علامت مساوی قرار دهیم. اگر این پارامتر تعریف نشده (undefined) باشد، عبارت سمت راست ارزیابی می‌شود. این ما را قادر می‌سازد تا فقط وقتی که kind و size برابر با undefined هستند، تابع requireParam را فراخوانی کنیم. همچنین ما قادر به استفاده از مقدار یک پارامتر در عبارت خود، به مانند کاری که در پارامتر پیشفرض برای upperKind کرده‌ایم، هستیم.

به علاوه، همین عمل را نیز، می‌توان برای تخریب آبجکت (چه به عنوان یک پارامتر، یا غیر پارامتر) استفاده کرد. برای مثال، اگر آرگومان‌های یک آبجکت تنظیمات را تغییر دهیم، باید به این گونه عمل کنیم:

function getCandy(options = {}) {
  const {
    kind = requiredParam('kind'),
    size = requiredParam('size'),
    upperKind = kind.toUpperCase(),
    callback = function noop() {},
  } = options
  // etc...
}

یا اگر می‌خواهیم آبجکت تنظیمات را مستقیما در لیست پارامتر تخریب کنیم، باید به این گونه عمل کنیم:

function getCandy({
  kind = requiredParam('kind'),
  size = requiredParam('size'),
  upperKind = kind.toUpperCase(),
  callback = function noop() {},
} = {}) {
  // etc...
}

نتیجه گیری

امیدوارم این روش‌های خلاصه شده برای شما پرکاربرد بوده باشند و حال درک بهتری از پارامترهای پیشفرض در JavaScript داشته باشید.

منبع

مقالات پیشنهادی

15 کتابخانه جالب javascript و css دی ۹۵

ماموریت ما در راکت این است که شما را بر اساس تکنولوژی روز طراحی وب به روز نگه داریم . به همین خاطر هم هست که ما تقریبا ماهانه یا چند هفته در میان پستی...

با استفاده از Billboardjs.js، نمودارهای داده‌ای بر پایه JavaScript بسازید

گرافیک و ویژگی‌های بصری، نقش حیاتی‌ای در پیشرفت محتویات وب بازی می‌کنند. با فناوری وب مدرن، اضافه کردن ویژگی‌های بصری سفارشی مانند آیکون‌های SVG در صف...

15 کتابخانه جالب javascript و css

ماموریت ما در راکت این است که شما را بر اساس تکنولوژی روز طراحی وب به روز نگه داریم . به همین خاطر هم هست که ما تقریبا ماهانه یا چند هفته در میان پستی...

دییسبا فریمورکی بر پایه css و javascript

دییسبا یک سیستم طراحی وب است برای برنامه نویسی آسان و راحت برای کسانی که کمترین آشنایی با وب را دارند، یا حتی برای افراد حرفه ای دییسبا بر پایه سی اس...