شما اینجا هستید

تعریف توابع به تنهایی باعث اجرای آنها نمیشود. تعریف تابع نام تابع و کاری را که باید در هنگام صدا زده شدنش انجام دهد را مشخص میکند.

فراخوانی تابع در واقع انجام اقدامات مشخص شده با پارامترهای داده شده به تابع است. برای مثال، اگر شما تابعی به نام square تعریف کرده باشید، میتوانید آن را به صورت زیر فراخوانی بکنید:

square(5);

دستور قبل تابع را با آرگومان 5 فراخوانی میکند. سپس دستورات درون تابع اجرا میگردد و مقدار 25 را برمیگرداند.

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

console.log(square(5));
/* ... */
function square(n) { return n*n }

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

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

برای مثال {}()function funcName در کد زیر کار نمیکند.

console.log(square(5));
square = function (n) {
  return n * n;
}

آرگومانهای یک تابع فقط محدود به رشته ها و اعداد نیستند. میتوانید اشیا را به صورت کامل به تابع پاس بدهید. در مورد اشیا در دروس بعدی توضیح خواهیم داد.

توابع میتوانند خودشان را نیز فراخوانی بکنند. برای مثال، در زیر تابعی است که فاکتوریل را به صورت بازگشتی محاسبه میکند:

function factorial(n){
  if ((n == 0) || (n == 1))
    return 1;
  else
    return (n * factorial(n - 1));
}

سپس میتوانید فاکتوریل 1 تا 5 را به صورت زیر محاسبه کنید:

var a, b, c, d, e;
a = factorial(1); // a gets the value 1
b = factorial(2); // b gets the value 2
c = factorial(3); // c gets the value 6
d = factorial(4); // d gets the value 24
e = factorial(5); // e gets the value 120

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

یک مثال از فراخوانی تابع :

function callFirst(arg1, arg2){

var s = "";

s += "this value: " + this;

s += "<br />";

for (i in callFirst.arguments) {

s += "arguments: " + callFirst.arguments[i];

s += "<br />";

}

return s;

}



document.write("Original function: <br/>");

document.write(callFirst(1, 2));

document.write("<br/>");



document.write("Function called with call: <br/>");

document.write(callFirst .call(3, 4, 5));



// Output:

// Original function:

// this value: [object Window]

// arguments: 1

// arguments: 2



// Function called with call:

// this value: 3

// arguments: 4

// arguments: 5

 

افزودن دیدگاه جدید

دیدگاه

  • تگ‌های HTML مجاز: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd> <img>
  • خطوط و پاراگراف‌ها بطور خودکار اعمال می‌شوند.
  • نشانی صفحه‌ها وب و پست الکترونیک بصورت خودکار به پیوند تبدیل می‌شوند.

Plain text

  • تگ‌های HTML مجاز نیستند.
  • نشانی صفحه‌ها وب و پست الکترونیک بصورت خودکار به پیوند تبدیل می‌شوند.
  • خطوط و پاراگراف‌ها بطور خودکار اعمال می‌شوند.
كد امنيتي
این پرسش برای جلوگیری از ارسال اسپمهای اتوماتیک است.