يك تابع(function) جاوااسكريپت هيچ بررسي در مقادير پارامترهاي وروديش انجام نمي دهد.
در فصول قبلي بيان شده است كه تابع مي تواند داراي پارامتر باشد .فرم كلي مطابق زير:
function functionName(parameter1, parameter2, parameter3) {
// code to be executed
}
پارامترهاي تابع نام هائي هستند كه در تعريف تابع ذكر شده اند.آرگومانهاي تابع مقادير واقعي هستند كه به تابع جهت فراخواني ارسال ويا دريافت ميشوند.
اگر درتابع با پارامتر هاي اشتباه) كمتراز تعريف تابع) فراخوان شود، براي كمبودها مقدارundefined در نظر گرفته ميشود .
بعضي مواقع روش فوق قابل قبول بوده ولي برخي مواقع لازم است مقداري پيش فرض به آن اختصاص داده شود.
مثال ـ تنظيم پيش فرض برايy در تابع
function myFunction(x, y) { if (y === undefined) { y = 2; } }
ES6اجازه ميدهد كه براي پارامترهاي تابع مقدار پيش فرض تعريف شود.
مثال ـ اگرy ارسال نشود وياundefined باشد، مقدار پش فرضy=2 است.
function myFunction(x, y = 10) { return x + y; } myFunction(5);
پارامتر بقيه(...) بيك تابع اجازه ميدهد كه ، تا تعداد نامحدودي ازآرگومانها را بعنوان يك آرايه در نظر بگيرد .فرمت كلي آن براي بيان مطابق زيراست:
در فراخواني تابع فقط پارامترهايarg1,arg2,... اعلام ميشوند و كدتابع فقط ازargs استفاده ميشود.
فرمت كلي تعريف تابع مطابق زير است
مثال ـ تابع با پارامتر نامحدود
function sum(...args) { let sum = 0; for (let arg of args) sum += arg; return sum; } let x = sum(4, 9, 16, 25, 29, 100, 66, 77);
توابع جاوااسكريپت داراي شئ داخلي هستند كه درآن شئ اطلاعات آرگومانهاي تابع قرارميگيرد. اين شئ بنام شئ آرگومانهاست(arguments)كه درآن آرايه اي از آرگومانها هنگام فراخواني تابع شكل ميگيرد.
باين ترتيب ميتوان به سادگي از يك تابع براي پيداكردن) بعنوان مثال) مقدار ماكزيمم ليستي ازاعداد را پيدا كرد، نمونه مثال زير:
مثال ـ پيدا كردن ماكزيمم ليست اعداد
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; }
مثال ـ نمونه كاربرد ديگر شئ ، پيدا نمودن جمع ليست مقادير
x = sumAll(1, 123, 500, 115, 44, 88); function sumAll() { let sum = 0; for (let i = 0; i < arguments.length; i++) { sum += arguments[i]; } return sum; }
اگر تابعي با تعداد زيادتري مقدار نسبت به تعريف تابع فراخوان شود، با استفاده از شئ آرگومانها قابل دسترس هستند.
پارامترها در فراخواني تابع، آرگومانهاي تابع هستند .آرگومانهاي تابع كه با مقدار ارسال ميشوند، جاوااسكريپت فقط مقدار را مي شناسد، نه محل آنرا.
اگر تابع مقدار آرگوماني را تغيير دهد، در مبناي آن تغيير انجام نمي شود .يعني آن خارج از تابع، تغييرات هيچ عكس العملي ندارد.
در جاوااسكريپت اگر شئي بعنوان آرگومان تابع بايد ارسال شود، مرجع آن ارسال ميشود .اگر در تابع خصوصيات چنين شئ تغيير كند، تغيير در همان شئ مرجع ميباشد .بعبارتي تغييرات در شئ آرگوماني تابع در داخل تابع عكس العمل بيروني دارد.