~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 تعریف کرد، ورودی دریافت نمود، مقدار بازگرداند، و بهعنوان ویژگی در اشیاء استفاده کرد. شناخت انواع فرمهای تابع، پایهای مهم برای نوشتن کدهای منعطف و قابلنگهداری است.
نوشته و پژوهش شده توسط دکتر شاهین صیامی