导读:操作步骤/方法1通过函数自身名字递归调用2functionsum(num){if(num<=1){return1;}else{returnnum+sum(num-1);}}3这种通过函数名字调用自身的方式存在一个问题:函数的名字是一个指向函数对象的指针,如果我们把函数的名字与函数对象本身的指向关系断开,这种方式运行时将出现错误。4通过arguments.callee调用函数自身5functi...
操作步骤/方法
1
通过函数自身名字递归调用
2
functionsum(num){if(num<=1){return1;}else{returnnum+sum(num-1);}}
3
这种通过函数名字调用自身的方式存在一个问题:函数的名字是一个指向函数对象的指针,如果我们把函数的名字与函数对象本身的指向关系断开,这种方式运行时将出现错误。
4
通过arguments.callee调用函数自身
5
functionsum(num){if(num<=1){return1;}else{returnnum+arguments.callee(num-1);}}console.log(sum(5));//15varsumAnother=sum;console.log(sumAnother(5));//15sum=null;console.log(sumAnother(5));//15
6
这种方式很好的解决了函数名指向变更时导致递归调用时找不到自身的问题。但是这种方式也不是很完美,因为在严格模式下是禁止使用arguments.callee的。
7
通过函数命名表达式来实现arguments.callee的效果。
8
varsum=(function(){'usestrict'returnfunctionfun(num){if(num<=1){return1;}else{returnnum+fun(num-1);}}})()console.log(sum(5));//15varsumAnother=sum;console.log(sumAnother(5));//15sum=null;console.log(sumAnother(5));//15
END
以上就是小编为大家介绍的JS实现递归的3种方法的全部内容,如果大家还对相关的内容感兴趣,请持续关注上海建站网!
标签:
内容声明:网站所展示的内容均由第三方用户投稿提供,内容的真实性、准确性和合法性均由发布用户负责。上海建站网对此不承担任何相关连带责任。上海建站网遵循相关法律法规严格审核相关关内容,如您发现页面有任何违法或侵权信息,欢迎向网站举报并提供有效线索,我们将认真核查、及时处理。感谢您的参与和支持!