js递归函数详解

图标

王豆瓜

豆瓜网

豆瓜网专栏

首发
王豆瓜 图标 2020-01-21 22:13:46

1.通过函数自身名字递归调用


function sum(num){  if(num<=1){    return 1;
  }else{    return num+sum(num-1);
  }
}

console.log(sum(5));//15


这种通过函数名字调用自身的方式存在一个问题:函数的名字是一个指向函数对象的指针,如果我们把函数的名字与函数对象本身的指向关系断开,这种方式运行时将出现错误。

2.通过arguments.callee调用函数自身

按 Ctrl+C 复制代码

按 Ctrl+C 复制代码

这种方式很好的解决了函数名指向变更时导致递归调用时找不到自身的问题。但是这种方式也不是很完美,因为在严格模式下是禁止使用arguments.callee的。

3.通过函数命名表达式来实现arguments.callee的效果。


var sum=(function(){    'use strict'    return  function fun(num){        if(num<=1){            return 1;
        }else{            return num+fun(num-1);
        }
    }
})()

console.log(sum(5));//15var sumAnother=sum;
console.log(sumAnother(5));//15sum=null;
console.log(sumAnother(5));//15



本文由豆瓜网专栏作家 王豆瓜 投稿发布,并经过豆瓜网编辑审核。

转载此文章须经作者同意,并附上出处(豆瓜网)及本页链接。

若稿件文字、图片、视频等内容侵犯了您的权益,请联系本站进行 投诉处理

相关搜索

js递归函数
图标 图标

王豆瓜

豆瓜网

豆瓜网专栏

全部评论

王豆瓜

豆瓜网

豆瓜网专栏

  • js递归函数详解
  • 166个省钱的小妙招,淘宝省钱小妙招是什么
  • 2020年五一活动软文要怎么写?
  • 分享2018谷歌seo优化方法
  • 线上推广100种方式方法有哪些?
  • 我来说两句