با عرض سلام خدمت کاربران محترم سایت پی وی لرن.
در این جلسه قصد داریم تا نحوه کار با پارامتر های تابع در جاوا اسکریپت JavaScript و آرگومان های تابع در جاوا اسکریپ را یاد بگیریم.
یک تابع جاوا اسکریپت هیچ وقت پارامتر هایش (آرگومان) را بررسی نمی کند.
پیش از این نیز گفته بودیم که تابع می تواند پارامتر هایی را داشته باشد:
1 2 3 | functionName(parameter1, parameter2, parameter3) { code to be executed } |
پارامتر ها در واقع نام هایی هستند که هنگام تعریف تابع لیست می شوند.
آرگومان ها در واقع مقادیر و متغیر هایی هستند که هنگام فراخوانی تابع به تابع ارسال می شوند.(به جای پارامتر ها)
توابع در جاوا اسکریپت نوع پارامتر ها را مشخص نمی کنند.
توابع هیچ عمل بررسی را روی آرگومان ها انجام نمی دهد.
توابع تعداد آرگومان های دریافت شده را چک نمی کند.
اگر تابعی در هنگام فراخوانی آرگومان هایی کمتر از تعداد پیش فرض تعیین کند، آرگومان های تعیین نشده مقدار undefined به خود می گیرند.
اما گاهی اوقات لازم تا مقدار پیش فرض را خودمان تعیین کنیم:
1 2 3 4 5 | function myFunction(x, y) { if (y === undefined) { y = 0; } } |
اگر تعداد آرگومان ها بیشتر از تعداد تعریف شده باشد، می توان با استفاده از شی arguments در جاوا اسکریپت به آن ها دسترسی پیدا کرد.
مثال زیر بیشترین مقدار آرگومان ها را برگشت می دهد:
1 2 3 4 5 6 7 8 9 10 11 12 | x = findMax(1, 123, 500, 115, 44, 88); function findMax() { var i; var max = -Infinity; for (i = 0; i < arguments.length; i++) { if (arguments[i] > max) { max = arguments[i]; } } return max; } |
مثال زیر جمع تمام آرگومان ها را برگشت می دهد:
1 2 3 4 5 6 7 8 9 10 | x = sumAll(1, 123, 500, 115, 44, 88); function sumAll() { var i; var sum = 0; for (i = 0; i < arguments.length; i++) { sum += arguments[i]; } return sum; } |
نکته : اگر یک تابع با آرگومان بیش از حد فراوانی (بیش از اعلام شده) فراخوانی شود، این آرگومان ها می توانند با استفاده از پارامتر argument رد شوند.
آرگومان ها به صورت ارجاع با مقدار هستند.
این یعنی هنگامی که متغیری را به عنوان آرگومان تابعی ارسال می کنیم، هر گونه تغییر بر روی آن آرگومان توسط تابع بر روی متغیر اصلی اعمال نمی شود.
به عبارت دیگر یک کپی از متغیر به تابع ارسال می شود.
اشیا به صورت ارجاع با مرجع هستند.
این یعنی هنگامی که شی را به عنوان آرگومان به تابع ارسال می کنیم، هرگونه تغییر بر روی آرگومان بر روی شی اصلی نیز اعمال می شود.
در اینجا خود شی به تابع ارسال می شود.