10年積累的成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有邱縣免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
遞歸
遞歸函數(shù)是在函數(shù)通過(guò)調(diào)用自身的情況下構(gòu)成的
1 function factorial(num){2 if (num <=1){3 return 1;4 } else {5 return num * factorial(num-1);6 }7 }
這是一個(gè)經(jīng)典的遞歸階乘函數(shù),但是下面的代碼會(huì)讓它出錯(cuò)
1 var anotherFactorial = factorial;2 factorial = null;3 console.log(anotherFactorial(4));//factorial is not a function
在執(zhí)行anotherFactorial()函數(shù)時(shí),factorial已經(jīng)不是函數(shù)了
arguments.callee是一個(gè)指向正在執(zhí)行的函數(shù)的指針,因此何以用它來(lái)實(shí)現(xiàn)對(duì)函數(shù)的遞歸調(diào)用
1 function factorial(num){2 if (num <=1){3 return 1;4 } else {5 return num * arguments.callee(num-1);6 }7 }
但是在嚴(yán)格模式下,不能通過(guò)腳本訪問(wèn)arguments.callee,訪問(wèn)這個(gè)屬性會(huì)導(dǎo)致錯(cuò)誤。不過(guò),可以使用命名函數(shù)表達(dá)式達(dá)成相同的結(jié)果
1 var factorial = (function f(num){ 2 if (num <= 1){ 3 return 1; 4 } else { 5 return num * f(num -1); 6 } 7 }); 8 9 var anotherFactorial = factorial;10 factorial = null;11 console.log(anotherFactorial(4)); //24