‎‎پارامترهاي تابع جاوااسكريپتJavaScript Functin Parameters -‎

Previous >    <Next  

‎يك تابع‎(‎function‎)‎ جاوااسكريپت هيچ بررسي در مقادير پارامترهاي ‎وروديش انجام نمي دهد.

‎‎پارامترها وآرگومانهاي تابعFunction Parameters and Arguments -‎

‎‎در فصول قبلي بيان شده است كه تابع مي تواند داراي پارامتر باشد .فرم كلي مطابق زير:

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

‎پارامترهاي تابع نام هائي هستند كه در تعريف تابع ذكر شده اند.آرگومانهاي تابع مقادير واقعي ‎هستند كه به تابع جهت فراخواني ارسال ويا دريافت ميشوند.

‎‎قوانين پارامترParameters Rules -‎

‎‎پارامترهاي پيش فرضDefault Parameters -‎

‎اگر درتابع با پارامتر هاي اشتباه‎)‎ كمتراز تعريف تابع) فراخوان شود، براي كمبودها ‎مقدار‎undefined‎ در نظر گرفته ميشود .

‎بعضي مواقع روش فوق قابل قبول بوده ولي برخي مواقع لازم است مقداري پيش فرض به آن اختصاص ‎داده شود.

‎‎مثال ـ تنظيم پيش فرض برايy در تابع

function myFunction(x, y) {
  if  (y === undefined) {
    y = 2;
  }
}

--(go to editor for change code and run)

‎‎مقادير پيش فرض پارامترهاDefault Parameter Values -‎

‎ES6‎اجازه ميدهد كه براي پارامترهاي تابع مقدار پيش فرض تعريف شود.

‎‎مثال ـ اگرy ارسال نشود ويا‎undefined‎ باشد، مقدار پش فرضy=2 است.

function myFunction(x, y = 10) {
  return x + y;
}
myFunction(5);

--(go to editor for change code and run)

‎‎تابع با پارامتر نامحدودFunction Rest Parameter -‎

‎پارامتر بقيه‎(...)‎ بيك تابع اجازه ميدهد كه ، تا تعداد نامحدودي ازآرگومانها را ‎بعنوان يك آرايه در نظر بگيرد .فرمت كلي آن براي بيان مطابق زيراست:

function name(arg1,arg2,...args) { }

‎در فراخواني تابع فقط پارامترهاي‎arg1,arg2,...‎ اعلام ميشوند و كدتابع فقط ‎ازargs استفاده ميشود.

‎‎فرمت كلي تعريف تابع مطابق زير است

‎function name(...args){ } // use args as Array

‎‎مثال ـ تابع با پارامتر نامحدود

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);

--(go to editor for change code and run)

‎‎شئ آرگومانهايThe Arguments Object -‎

‎توابع جاوااسكريپت داراي شئ داخلي هستند كه درآن شئ اطلاعات آرگومانهاي تابع قرارميگيرد. ‎اين شئ بنام شئ آرگومانهاست‎(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;
}

--(go to editor for change code and run)

‎‎مثال ـ نمونه كاربرد ديگر شئ ، پيدا نمودن جمع ليست مقادير

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;
}

--(go to editor for change code and run)

‎اگر تابعي با تعداد زيادتري مقدار نسبت به تعريف تابع فراخوان شود، با استفاده از شئ ‎آرگومانها قابل دسترس هستند.

‎‎ارسال آرگومان با مقدارArguments are assed by Value -‎

‎پارامترها در فراخواني تابع، آرگومانهاي تابع هستند .آرگومانهاي تابع كه با مقدار ارسال ‎‎ميشوند، جاوااسكريپت فقط مقدار را مي شناسد، نه محل آنرا.

‎اگر تابع مقدار آرگوماني را تغيير دهد، در مبناي آن تغيير انجام نمي شود .يعني آن خارج از ‎تابع، تغييرات هيچ عكس العملي ندارد.

‎‎ارسال اشياء با مرجعObjects are Passed by Reference -‎

‎در جاوااسكريپت اگر شئي بعنوان آرگومان تابع بايد ارسال شود، مرجع آن ارسال ميشود .اگر در ‎تابع خصوصيات چنين شئ تغيير كند، تغيير در همان شئ مرجع ميباشد .بعبارتي تغييرات در شئ ‎آرگوماني تابع در داخل تابع عكس العمل بيروني دارد.


Previous >    <Next