توابع در جاوااسکریپت – تعریف، پارامتر، بازگشت مقدار و انواع ساختارها

توابع در جاوااسکریپت نقش محوری در ساختار برنامه‌ها دارند. این مقاله به بررسی تعریف تابع به‌صورت declaration و expression، نحوهٔ دریافت پارامتر، بازگرداندن مقدار، و استفاده از توابع به‌عنوان مقادیر قابل‌انتقال می‌پردازد. همچنین به نحوهٔ تعریف توابع در اشیاء و تفاوت آن‌ها با کلاس‌ها اشاره می‌شود.

تابعپارامترreturnexpression

~3 دقیقه مطالعه · آخرین به‌روزرسانی ۲۲ مهر ۱۴۰۴

مقدمه


در برنامه‌نویسی، واژهٔ "تابع" معانی مختلفی دارد. در برنامه‌نویسی تابعی (FP)، تابع تعریف ریاضی دقیقی دارد. اما در جاوااسکریپت، تابع بیشتر به معنای رویه (procedure) است: مجموعه‌ای از دستورات که می‌توان چندبار آن را فراخوانی کرد، ورودی دریافت کند و خروجی بدهد.


تعریف تابع به‌صورت declaration


از روزهای ابتدایی JS، تعریف تابع به‌صورت زیر رایج بوده:


function awesomeFunction(coolThings) {
  // ...
  return amazingStuff;
}

این نوع تعریف را function declaration می‌نامند، زیرا به‌صورت مستقل و خارج از هر عبارت ظاهر می‌شود. ارتباط بین نام تابع و مقدار آن در مرحلهٔ کامپایل انجام می‌شود، قبل از اجرای کد.


تعریف تابع به‌صورت expression


در مقابل، می‌توان تابع را به‌صورت expression تعریف و به متغیر نسبت داد:


var awesomeFunction = function(coolThings) {
  // ...
  return amazingStuff;
};

در این حالت، ارتباط بین نام متغیر و تابع در زمان اجرا برقرار می‌شود، نه در مرحلهٔ کامپایل.


تابع به‌عنوان مقدار


در جاوااسکریپت، توابع نوعی مقدار هستند — می‌توان آن‌ها را به متغیر نسبت داد، به‌عنوان آرگومان ارسال کرد یا در ساختارهای دیگر استفاده کرد. این ویژگی برای پشتیبانی از الگوهای برنامه‌نویسی تابعی ضروری است.


پارامترها و ورودی تابع


توابع می‌توانند ورودی دریافت کنند:


function greeting(myName) {
  console.log(`Hello, ${myName}!`);
}
greeting("Kyle"); // Hello, Kyle!

در این مثال، myName پارامتر تابع است که مانند متغیر محلی عمل می‌کند. می‌توان هر تعداد پارامتر تعریف کرد و هنگام فراخوانی، مقدار مناسب را ارسال نمود.


بازگرداندن مقدار با return


توابع می‌توانند با استفاده از return مقدار بازگردانند:


function greeting(myName) {
  return `Hello, ${myName}!`;
}
var msg = greeting("Kyle");
console.log(msg); // Hello, Kyle!

فقط یک مقدار قابل بازگشت است، اما می‌توان چند مقدار را در قالب آرایه یا شیء بازگرداند.


تابع به‌عنوان ویژگی شیء


از آن‌جا که تابع یک مقدار است، می‌توان آن را به‌عنوان ویژگی در شیء تعریف کرد:


var whatToSay = {
  greeting() {
    console.log("Hello!");
  },
  question() {
    console.log("What's your name?");
  },
  answer() {
    console.log("My name is Kyle.");
  }
};
whatToSay.greeting(); // Hello!

در این مثال، سه تابع به‌عنوان ویژگی‌های شیء whatToSay تعریف شده‌اند و می‌توان آن‌ها را با دسترسی به ویژگی فراخوانی کرد.


جمع‌بندی


توابع در جاوااسکریپت ساختارهای قدرتمندی هستند که می‌توان آن‌ها را به‌صورت declaration یا expression تعریف کرد، ورودی دریافت نمود، مقدار بازگرداند، و به‌عنوان ویژگی در اشیاء استفاده کرد. شناخت انواع فرم‌های تابع، پایه‌ای مهم برای نوشتن کدهای منعطف و قابل‌نگهداری است.


نوشته و پژوهش‌شده توسط دکتر شاهین صیامی

مقالات مرتبط

نحوهٔ میزبانی مستقل اپلیکیشن Next.js – پیکربندی، کشینگ، و استراتژی‌های استقرار

nextjs-self-hosting-deployment-cache-isr-proxy-env

ادامه

مقایسه‌های شرطی تبدیل‌پذیر و کلاس‌های پروتوتایپی در جاوااسکریپت – درک دقیق رفتار شرطی و ساختارهای ارث‌بری

این مقاله دو موضوع مهم از ضمیمهٔ A کتاب YDKJSY را بررسی می‌کند: نحوهٔ تبدیل نوع در عبارات شرطی مانند if و while، و الگوی کلاس‌های پروتوتایپی به‌عنوان پیش‌زمینه‌ای برای کلاس‌های ES6. با مثال‌های عملی، تفاوت بین مقایسه‌های دقیق و تبدیل‌پذیر، و نحوهٔ تفویض رفتار از طریق زنجیرهٔ پروتوتایپ روشن می‌شود.

ادامه

در جاوااسکریپت – تفاوت مقدار و مرجع، و فرم‌های متنوع تعریف تابع

در جاوااسکریپت – تفاوت مقدار و مرجع، و فرم‌های متنوع تعریف تابع

ادامه

پروتوتایپ‌ها در جاوااسکریپت – زنجیرهٔ ارجاع، تفویض ویژگی‌ها، و نقش this در رفتار پویا

پروتوتایپ‌ها در جاوااسکریپت مکانیزمی برای ارجاع ویژگی‌ها بین اشیاء هستند. این مقاله به تعریف زنجیرهٔ پروتوتایپ، نحوهٔ تفویض ویژگی‌ها، تفاوت بین دسترسی و انتساب، و نقش کلیدی this در فراخوانی متدهای ارجاع‌شده می‌پردازد. درک این مفاهیم برای طراحی شی‌گرا و رفتارهای پویا در JS ضروری است.

ادامه

Closure و this در جاوااسکریپت – حافظهٔ دامنه و زمینهٔ اجرایی در توابع

Closure و this دو مفهوم بنیادی و گاه گیج‌کننده در جاوااسکریپت هستند. این مقاله به تعریف دقیق closure به‌عنوان حافظهٔ متغیرهای بیرونی در توابع، و بررسی رفتار پویا و وابسته به نحوهٔ فراخوانی در this می‌پردازد. با مثال‌های عملی، تفاوت بین دامنهٔ ثابت و زمینهٔ اجرایی پویا روشن می‌شود.

ادامه

تکرار در جاوااسکریپت – الگوی Iterator، ساختارهای قابل‌تکرار، و مصرف استاندارد داده‌ها

تکرار در جاوااسکریپت – الگوی Iterator، ساختارهای قابل‌تکرار، و مصرف استاندارد داده‌ها

ادامه