در برنامهنویسی، واژهٔ "تابع" معانی مختلفی دارد. در برنامهنویسی تابعی (FP)، تابع تعریف ریاضی دقیقی دارد. اما در جاوااسکریپت، تابع بیشتر به معنای رویه (procedure) است: مجموعهای از دستورات که میتوان چندبار آن را فراخوانی کرد، ورودی دریافت کند و خروجی بدهد.
از روزهای ابتدایی JS، تعریف تابع بهصورت زیر رایج بوده:
function awesomeFunction(coolThings) {
// ...
return amazingStuff;
}این نوع تعریف را function declaration مینامند، زیرا بهصورت مستقل و خارج از هر عبارت ظاهر میشود. ارتباط بین نام تابع و مقدار آن در مرحلهٔ کامپایل انجام میشود، قبل از اجرای کد.
در مقابل، میتوان تابع را بهصورت expression تعریف و به متغیر نسبت داد:
var awesomeFunction = function(coolThings) {
// ...
return amazingStuff;
};در این حالت، ارتباط بین نام متغیر و تابع در زمان اجرا برقرار میشود، نه در مرحلهٔ کامپایل.
در جاوااسکریپت، توابع نوعی مقدار هستند — میتوان آنها را به متغیر نسبت داد، بهعنوان آرگومان ارسال کرد یا در ساختارهای دیگر استفاده کرد. این ویژگی برای پشتیبانی از الگوهای برنامهنویسی تابعی ضروری است.
توابع میتوانند ورودی دریافت کنند:
function greeting(myName) {
console.log(`Hello, ${myName}!`);
}
greeting("Kyle"); // Hello, Kyle!در این مثال، myName پارامتر تابع است که مانند متغیر محلی عمل میکند. میتوان هر تعداد پارامتر تعریف کرد و هنگام فراخوانی، مقدار مناسب را ارسال نمود.
توابع میتوانند با استفاده از 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 تعریف کرد، ورودی دریافت نمود، مقدار بازگرداند، و بهعنوان ویژگی در اشیاء استفاده کرد. شناخت انواع فرمهای تابع، پایهای مهم برای نوشتن کدهای منعطف و قابلنگهداری است.