js函数实现递归⾃调⽤的⽅法
js函数的递归调⽤⽅法
1.通过函数⾃⾝名字递归调⽤
function sum(num){
if(num<=1){
return 1;
}else{
return num+sum(num-1);
}
}
console.log(sum(5));//15
这种通过函数名字调⽤⾃⾝的⽅式存在⼀个问题:函数的名字是⼀个指向函数对象的指针,如果我们把函数的名字与函数对象本⾝的指向关系断开,这种⽅式运⾏时将出现错误。
2.通过arguments.callee调⽤函数⾃⾝
function sum(num){
if(num<=1){
return 1;
}else{
return num+arguments.callee(num-1);
}
}
console.log(sum(5));//15
var sumAnother=sum;
console.log(sumAnother(5));//15
sum=null;
console.log(sumAnother(5));//15
这种⽅式很好的解决了函数名指向变更时导致递归调⽤时不到⾃⾝的问题。但是这种⽅式也不是很完美,因为在严格模式下是禁⽌使⽤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));//15
var sumAnother=sum;
js调用方法的三种写法
console.log(sumAnother(5));//15
sum=null;
console.log(sumAnother(5));//15

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。