سلام دوستان عزیز، صبح تون بخیر و شادی ، باادامه اموزشهای جاوااسکریپت در خدمت شماهستم.

یک تابع جاوا اسکریپت مقادیر پارامترها (آرگومان ها) را هیچگاه بررسی نمی کند.

در مباحث اولیه ی آموزش جاوا اسکریپت، آموختیم که توابع می توانند پارامتر بگیرند (داشته باشند):

functionName(parameter1, parameter2, parameter3) {
code to be executed
}

پارامترهای تابع، همان اسم هایی هستند که در تعریف تابع داخل پرانتز، درج شده اند.

آرگومان های تابع، مقادیر واقعی هستند که به تابع مربوطه ارسال می شوند (و توسط آن دریافت می گردند).

نکاتی درباره ی پارامترهای جاوا اسکریپت

تعریف های توابع جاوا اسکریپت نوع داده (data type) پارامتر را مشخص نمی کنند، هیچ گونه بررسی در رابطه با نوع آرگومان های ارسالی (فرستاده شده) انجام نمی دهد و همچنین تعداد آرگومان های دریافتی را چک نمی کند.

تخصیص مقدار پیش فرض به پارامتر

چنانچه تابعی فراخوانده شود که تعداد آرگومان های آن از تعداد واقعی اعلان شده کمتر باشد، مقادیر (آرگومان هایی که در حال حضر موجود نیستند) روی undefined تنظیم می شوند.

گاهی این امر قابل قبول می باشد، اما در برخی شرایط توصیه می شود مقادیر پیش فرض به پارامتر مربوطه تخصیص داده شود:

نمونه یک
?
۱
۲
۳
۴
۵
۶
۷
۸
۹

function myFunction(x, y) {
if (y === undefined) {
y = 0;
}
return x * y;
}
document.getElementById(“demo”).innerHTML = myFunction(4);

چنانچه تابعی صدا زده شود که تعداد آرگومان های آن از تعداد اصلی (اعلان شده) بیشتر باشد، نمی توان به آرگومان ارجاع داد (اشاره کرد) زیرا که چنین آرگومان هایی دارای اسم نیستند. دسترسی به آرگومان های مزبور تنها از طریق شی آرگومان امکان پذیر می باشد.

شی توکار جاوا اسکریپت (argument objects)

توابع جاوا اسکریپت در خود یک شی یک دارند که آن شی توکار، argument object نامیده می شود.

Argument object دربردارنده ی آرایه ای از آرگومان هاست که به هنگام فراخوانی استفاده می شوند.

از این طریق می توان با استفاده از یک تابع بیشترین مقدار (بزرگترین عدد) را در آرایه ای از اعداد بدست آورد.

مثال:

نمونه دو
?
۱
۲
۳
۴
۵
۶
۷
۸
۹
۱۰
۱۱
۱۲
۱۳

function findMax() {
var i;
var max = -Infinity;
for (i = 0; i max) {
max = arguments[i];
}
}
return max;
}
document.getElementById(“demo”).innerHTML = findMax(4, 5, 6);

یا یک تابع ایجاد کرد که تمامی مقادیر ورودی (input value) را محسابه کرده و حاصل آن ها را برگرداند:

نمونه سه
?
۱
۲
۳
۴
۵
۶
۷
۸
۹
۱۰
۱۱

function sumAll() {
var i, sum = 0;
for (i = 0; i < arguments.length; i++) {
sum += arguments[i];
}
return sum;
}
document.getElementById("demo").innerHTML =
sumAll(1, 123, 500, 115, 44, 88);

ارسال آرگومان ها با مقدار!

پارامترها در تابعی که فراخوانی می شود نقش آرگومان های آن تابع را دارند.

آرگومان های جاوا اسکریپت با مقدار ارسال می شوند: تابع فقط مقدار را می شناسد و از مکان آرگومان (اینکه آرگومان کجاست و چگونه ارسال می شود) هیچ آگاهی ندارد.

لازم است توجه داشته باشید که تابع فقط مقدار آرگومان را تغییر می دهد (بدین معنا که مقدار اصلی (اولیه) پارامتر در این بین به هیچ وجه توسط تابع تغییر نمی یابد).

تغییراتی که به آرگومان وارد می شود، بیرون از آرگومان قابل مشاهده نمی باشد.

ارسال اشیا با ارجاع (object by reference)

در زبان جاوا اسکریپت، مرجع شی (object reference) خود یک مقدار تلقی می شود.

به همین دلیل هم، خود شی همراه با مرجع آن (reference) ارسال می شود:

برخلاف ارسال آرگومان با مقدار، چنانچه یک تابع خاصیت شی را تغییر دهد، مقدار اولیه نیز به دنبال آن تغییر می یابد.

تغییرات وارد آمده به خاصیت های شی بیرون از تابع قابل رویت می باشند.