902 B
902 B
递归
发生前提:
递归是在一个函数通过名字调用自身的情况下发生的 如:
function a(n){
if(n<=1){
return 1
}else{
return num*a(n-1)
}
}
这是一个经典的递归阶乘函数,但是接下来的操作却可能会导致他出错
function a(n) {
if (n <= 1) {
return 1
} else {
return n * a(n - 1)
}
}
console.log(a(5)) //120
var cheng=a
a=null
console.log(cheng(5))// : a is not a function
以上代码把a保存在一个变量(cheng)中,然后将a赋值为null
在cheng执行的过程中 必然会执行到a (在cheng 中else代码块的函数名字改不了)
但是此时a已经不是函数了,所以会报错 a is not a function
上面问题的解决措施: