الگوریتم اول

لطفا صبر کنید...

توابع (Functions) در جاوا اسکریپت

توابع در جاوا اسکریپت بلوک‌های کدی هستند که می‌توانند برای انجام یک وظیفه خاص ایجاد شوند و سپس در برنامه چندین بار فراخوانی شوند. استفاده از توابع باعث سازماندهی بهتر کد و کاهش تکرار می‌شود. توابع در جاوا اسکریپت می‌توانند ورودی‌هایی دریافت کنند (پارامترها) و مقدار خروجی (مقدار برگشتی) را بازگردانند.

۱. تعریف تابع (Function Declaration)

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

ساختار:

function functionName(پارامتر1, پارامتر2, ...) {
  // کدهایی که تابع اجرا می‌کند
  return خروجی;  // اختیاری است، تابع می‌تواند مقداری را برگشت دهد
}

مثال:

function greet(name) {
  console.log("سلام " + name);
}

greet("علی");  // خروجی: سلام علی

در این مثال، تابع greet یک پارامتر به نام name می‌گیرد و پیام "سلام" را با نام وارد شده ترکیب کرده و در کنسول چاپ می‌کند.

۲. تابع با مقدار برگشتی (Return Function)

یک تابع می‌تواند مقداری را با استفاده از دستور return بازگرداند. این مقدار می‌تواند هر نوع داده‌ای باشد و می‌توان آن را در کدهای دیگر استفاده کرد.

ساختار:

function functionName(پارامتر1, پارامتر2, ...) {
  return خروجی;
}

مثال:

function add(a, b) {
  return a + b;
}

let result = add(5, 10);  // result برابر با 15 خواهد شد
console.log(result);  // خروجی: 15

در این مثال، تابع add دو عدد را می‌گیرد و حاصل جمع آن‌ها را باز می‌گرداند.

۳. توابع به صورت ابزاری (Anonymous Functions)

توابع می‌توانند بدون نام هم تعریف شوند. این نوع توابع به توابع ناشناس (Anonymous Functions) معروف هستند و معمولاً برای استفاده‌های موقت یا در داخل سایر توابع استفاده می‌شوند.

مثال:

let greet = function(name) {
  console.log("سلام " + name);
};

greet("سارا");  // خروجی: سلام سارا

در این مثال، تابع بدون نام به متغیر greet نسبت داده شده است و به‌صورت یک تابع معمولی فراخوانی می‌شود.

۴. توابع Arrow (توابع پیکان)

توابع پیکان (Arrow Functions) شیوه‌ای کوتاه‌تر و مدرن‌تر برای تعریف توابع هستند. این توابع نیازی به کلمه کلیدی function ندارند و نحوه نوشتار آن‌ها بسیار ساده است.

ساختار:

const functionName = (پارامتر1, پارامتر2, ...) => {
  // کدهای تابع
}

مثال:

const add = (a, b) => a + b;
console.log(add(5, 10));  // خروجی: 15

در این مثال، تابع add به‌صورت یک تابع پیکان تعریف شده است که دو عدد را جمع می‌کند و نتیجه را باز می‌گرداند.

۵. توابع به عنوان آرگومان (Functions as Arguments)

در جاوا اسکریپت، می‌توانیم توابع را به عنوان آرگومان به توابع دیگر ارسال کنیم. این ویژگی امکان تعریف توابع عمومی‌تر و انعطاف‌پذیرتر را فراهم می‌کند.

مثال:

function processUserData(user, callback) {
  // پردازش داده‌ها
  callback(user);
}

function printUserName(user) {
  console.log("نام کاربر: " + user.name);
}

let user = { name: "مریم", age: 25 };
processUserData(user, printUserName);  // خروجی: نام کاربر: مریم

در این مثال، تابع processUserData یک تابع callback را به‌عنوان آرگومان دریافت می‌کند و پس از پردازش داده‌ها، آن را فراخوانی می‌کند.

۶. توابع بازگشتی (Recursive Functions)

توابع بازگشتی توابعی هستند که خود را درون خود فراخوانی می‌کنند. این نوع توابع معمولاً برای حل مسائل تکراری مانند محاسبه فاکتوریل یا پیمایش درخت‌ها استفاده می‌شوند.

مثال: محاسبه فاکتوریل:

function factorial(n) {
  if (n === 0) {
    return 1;
  }
  return n * factorial(n - 1);
}

console.log(factorial(5));  // خروجی: 120

در این مثال، تابع factorial خود را با مقدار n - 1 فراخوانی می‌کند تا محاسبه فاکتوریل انجام شود.

۷. پارامترهای پیش‌فرض (Default Parameters)

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

مثال:

function greet(name = "مهمان") {
  console.log("سلام " + name);
}

greet();  // خروجی: سلام مهمان
greet("علی");  // خروجی: سلام علی

در این مثال، اگر هنگام فراخوانی تابع greet پارامتر name مشخص نشود، از مقدار پیش‌فرض "مهمان" استفاده می‌شود.

۸. پارامترهای باقی‌مانده (Rest Parameters)

با استفاده از پارامترهای باقی‌مانده، می‌توانید تعداد نامحدودی از پارامترها را در یک آرایه جمع‌آوری کنید.

ساختار:

function functionName(...args) {
  // args یک آرایه از پارامترها است
}

مثال:

function sum(...numbers) {
  return numbers.reduce((acc, num) => acc + num, 0);
}

console.log(sum(1, 2, 3, 4, 5));  // خروجی: 15

در این مثال، تابع sum می‌تواند هر تعداد عدد را به‌عنوان آرگومان دریافت کند و مجموع آن‌ها را محاسبه کند.

نتیجه‌گیری

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