国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > JS > 正文

JavaScript遞歸函數(shù)定義與用法實(shí)例分析

2024-05-06 16:47:52
字體:
供稿:網(wǎng)友

本文實(shí)例講述了JavaScript遞歸函數(shù)定義與用法。分享給大家供大家參考,具體如下:

遞歸函數(shù)是一個(gè)函數(shù)通過名字調(diào)用自身的情況下形成的,比如經(jīng)典的遞歸階乘函數(shù):

function factorial(num) {  if (num <= 1) {    return 1;  } else {    return num * factorial(num - 1);  }}

上面的這種寫法,可能會造成問題:

var anotherFactorial = factorial;factorial = null;console.log(anotherFactorial(4));//出錯(cuò)

因?yàn)?factorial 函數(shù)定義內(nèi)部使用了自身的函數(shù)名,所以當(dāng) factorial 被置為 null 后,factorial 已不是函數(shù),自然報(bào)錯(cuò)啦 O(∩_∩)O~。

可以使用 arguments.callee 指向正在執(zhí)行的函數(shù)的指針來避免上面出現(xiàn)的問題:

function factorial(num) {  if (num <= 1) {    return 1;  } else {    return num * arguments.callee(num - 1);  }}var anotherFactorial = factorial;factorial = null;console.log(anotherFactorial(4));

運(yùn)行結(jié)果:24

但在嚴(yán)格模式下,不能訪問 arguments.callee,但可以使用命名函數(shù)表達(dá)式來實(shí)現(xiàn)上述功能:

var factorial = (    function f(num) {      if (num <= 1) {        return 1;      } else {        return num * f(num - 1);      }    });var anotherFactorial = factorial;factorial = null;console.log(anotherFactorial(4));

 

希望本文所述對大家JavaScript程序設(shè)計(jì)有所幫助。


注:相關(guān)教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 四会市| 北海市| 辰溪县| 景泰县| 普安县| 长垣县| 天等县| 平武县| 揭西县| 灵寿县| 龙井市| 崇明县| 武邑县| 迭部县| 绥芬河市| 师宗县| 平阴县| 桃园县| 河曲县| 梁平县| 永安市| 桦甸市| 嘉定区| 日喀则市| 永和县| 西畴县| 辽源市| 工布江达县| 景德镇市| 巴楚县| 工布江达县| 临海市| 开封县| 芷江| 朝阳县| 临沧市| 宣化县| 宁乡县| 毕节市| 子洲县| 定陶县|