1. 程式人生 > >【JavaScript】函式的引數傳遞和遞迴呼叫

【JavaScript】函式的引數傳遞和遞迴呼叫

引數傳遞

  • 傳遞函式
    這裡主要分享下,如果將一個函式作為引數進行傳遞
function box(sum,num3)          //把函式本身作為引數傳遞,而不是函式的返回值
{
    return sum(num3);
}

function sum(num1)
{
    return num1+11;
}
var result=box(sum,10)      //將函式sum作為引數傳遞到另外一個函式裡面
alert(result);

如上,我們直接將函式名作為引數寫入到另一個函式的引數集即可。上述程式碼的執行順序:第12行→第11行→第1行→第3行→第6行→第8行→輸出(這順序不知道理解的對不對,總感覺有點彆扭)
- 呼叫函式時的幾種寫法及其含義
藉助匿名函式和閉包,說明一下函式呼叫時的幾種寫法的含義

 function box()
{
    return function()
    {
        return '閉包:函式裡面再放一個匿名函式';
    };
}
alert(box);     //列印函式box的函式體
alert(box());           //列印函式box的返回值(return後面的內容)
alert(box()());     //列印函式box中的匿名函式的返回值

三個alert打印出來的東西都在圖裡面,大家自行理解。
效果圖

遞迴呼叫

對遞迴的理解不太清楚,這裡就以階乘的計算再次複習下。

function Factorial(num)
{
if(num<=1) //1的階乘為1 { return 1; } else { return num*Factorial(num-1); //直接呼叫函式返回值; //或者使用arguments.callee動態呼叫函式本身 } } alert(Factorial(6));

上述程式碼通過呼叫函式自身的返回值進行遞迴,進而實現階乘的功能。程式的執行順序:

  • 1)輸入值不大於1時
    13→1→3→5
  • 2)輸入值大於1時
    13→1→7→9→1→7→9→…(此處在輸入值大於1時迴圈)→直至輸入值不大於1時進入1)
  • 函式的引數傳遞、函式呼叫的幾種寫法(主要是小括號的使用)以及遞迴呼叫就介紹到這裡。
    感謝您的寶貴時間,祝生活愉快,謝謝~~
    ——書生