15- آموزش جامع توابع (Functions) در جاوااسکریپت: از پایه تا پیشرفته
توابع (Functions) یکی از حیاتیترین اجزای هر زبان برنامهنویسی هستند. در این آموزش، با ۴ روش مختلف تعریف و استفاده از توابع در جاوااسکریپت شامل Function Declarations، Function Expressions، توابع بلافاصله اجرا شونده (IIFE) و Property Methods آشنا میشویم.
توابع، بلوکهایی از کد هستند که برای انجام یک وظیفه خاص تعریف میشوند. قدرت اصلی توابع در این است که میتوانید یک بار آنها را تعریف کنید و چندین بار در جایجای برنامه فراخوانی کنید. در جاوااسکریپت، روشهای متنوعی برای کار با توابع وجود دارد که در ادامه آنها را بررسی میکنیم.
۱. اعلان تابع (Function Declarations)
این روش، متداولترین راه برای تعریف تابع است. ساختار کلی آن به این صورت است:
function greet(firstName = 'John', lastName = 'Doe') {
return 'Hello ' + firstName + ' ' + lastName;
}
// فراخوانی تابع
console.log(greet('Steve', 'Smith'));
پارامترها و مقادیر پیشفرض (Default Parameters)
در گذشته (ES5)، برای تعیین مقدار پیشفرض باید چک میکردیم که آیا پارامتر undefined است یا خیر. اما در ES6، میتوانیم بسیار سادهتر عمل کنیم:
- روش مدرن (ES6):
function greet(firstName = 'John') { ... } - این روش باعث میشود اگر ورودی خاصی ارسال نشد، مقدار پیشفرض جایگزین شود.
۲. عبارت تابعی (Function Expressions)
در این حالت، تابع را به یک متغیر اختصاص میدهیم. این تابع میتواند نامگذاری شود یا به صورت ناشناس (Anonymous) باقی بماند.
const square = function(x = 3) {
return x * x;
};
console.log(square(8)); // خروجی: 64
تفاوت: در اکثر مواقع، تفاوت عملکردی بین Declarations و Expressions وجود ندارد، اما در مباحث پیشرفتهتر (مانند Hoisting و Closures)، استفاده از Function Expressions مزایای خاص خود را دارد.
۳. توابع بلافاصله اجرا شونده (IIFE)
توابع بلافاصله اجرا شونده یا Immediately Invoked Function Expressions، توابعی هستند که بلافاصله پس از تعریف شدن، اجرا میشوند. برای ساخت آنها، تابع را درون پرانتز قرار میدهیم:
(function(name) {
console.log('Hello ' + name);
})('Matin');
// خروجی: Hello Matin
کاربرد: این توابع در الگوهای طراحی (Design Patterns) بسیار کاربردی هستند؛ به ویژه برای ایجاد متغیرها و متدهای خصوصی (Private) در پروژههای ماژولار.
۴. متدها (Property Methods)
وقتی یک تابع را درون یک شیء (Object) تعریف میکنیم، به آن متد (Method) میگوییم.
const todo = {
add: function() {
console.log('Add todo...');
},
edit: function(id) {
console.log(`Edit todo ${id}`);
}
};
// تعریف متد خارج از شیء
todo.delete = function() {
console.log('Delete todo...');
};
todo.add(); // خروجی: Add todo...
todo.edit(22); // خروجی: Edit todo 22
todo.delete(); // خروجی: Delete todo...
جمعبندی
در این بخش یاد گرفتیم که:
- Function Declarations: روش استاندارد برای تعریف توابع هستند.
- Function Expressions: تابع را به عنوان یک متغیر میبینند.
- IIFE: برای اجرای فوری و کپسولهسازی کد به کار میروند.
- Property Methods: توابعی هستند که عضوی از یک شیء محسوب میشوند.
در آموزش بعدی، مبحث جذاب حلقهها (Loops) و پیمایش دادهها را بررسی خواهیم کرد.