پارامترهای تابع (Function Parameters)
«پارامتر (Parameter)» اسم ورودی هاست. «آرگومان (Argument)» همان مقدارهای واقعی است. جاوااسکریپت تعداد و نوع را چک نمی کند. پس باید خودت مدیریت کنی تا خروجی درست بگیری.
پارامترها و آرگومان ها
نام ها داخل تعریف تابع، پارامتر هستند. مقدارهای هنگام فراخوانی، آرگومان هستند.
function myFunction(parameter1, parameter2, parameter3) {
// code to be executed
}
قوانین پایه پارامتر
نوع داده برای پارامتر مشخص نمی شود. تعداد آرگومان ها هم چک نمی شود. بنابراین مسئولیت با توست.
مقدار پیش فرض قبل از ES6
اگر آرگومان کم باشد، مقدارِ جاافتاده undefined می شود. می توانی دستی مقدار پیش فرض بگذاری.
function myFunction(x, y) {
if (y === undefined) {
y = 2;
}
}
پارامتر پیش فرض در ES6
در ES6، می توانی مقدار پیش فرض مستقیم داخل امضا بنویسی.
function myFunction(x, y = 10) {
return x + y;
}
myFunction(5);
پارامتر Rest (...)
«Rest» یعنی هر تعداد آرگومان را مانند آرایه بگیر. برای جمع زدن، خیلی کاربردی است.
function sum(...args) {
let total = 0;
for (let arg of args) {
total += arg;
}
return total;
}
let x = sum(4, 9, 16, 25, 29, 100, 66, 77);
شیء arguments
داخل هر تابع، «arguments» شبیه آرایه است. همه آرگومان های فراخوانی را نگه می دارد.
let x = findMax(1, 123, 500, 115, 44, 88);
function findMax() {
let max = -Infinity;
for (let i = 0; i < arguments.length; i++) {
if (arguments[i] > max) {
max = arguments[i];
}
}
return max;
}
نکته: اگر آرگومان ها بیشتر از پارامترها باشند، با arguments به بقیه دسترسی داری.
let y = sumAll(1, 123, 500, 115, 44, 88);
function sumAll() {
let total = 0;
for (let i = 0; i < arguments.length; i++) {
total += arguments[i];
}
return total;
}
ارزش یا ارجاع؟
مقادیر معمولی «by value» می روند؛ تغییرشان بیرون دیده نمی شود. اما شیء با «ارجاع» رفتار می کند؛ تغییر خواص شیء، بیرون هم دیده می شود.
گام های تمرینی
- یک تابع با y پیش فرض 2 بساز.
- نسخه ES6 با y = 10 بنویس.
- یک sum با Rest پیاده سازی کن.
جمع بندی سریع
- پارامتر نام است؛ آرگومان مقدار است.
- ES6 پیش فرض ها را ساده کرد.
- Rest هر تعداد ورودی می گیرد.
- arguments شبیه آرایه است.
- اعداد by value؛ اشیاء با ارجاع اند.
برای ادامه، صفحه توابع پیکانی را ببین و سپس به فراخوانی تابع برو. این صفحه مرجع «پارامترهای تابع» است.