【JavaScript】函式的引數傳遞和遞迴呼叫
阿新 • • 發佈:2019-02-14
引數傳遞
- 傳遞函式
這裡主要分享下,如果將一個函式作為引數進行傳遞
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) - 函式的引數傳遞、函式呼叫的幾種寫法(主要是小括號的使用)以及遞迴呼叫就介紹到這裡。
感謝您的寶貴時間,祝生活愉快,謝謝~~
——書生