webJ

追求自由美好的生活

JavaScript 递归调用

什么是递归?

就是函数里再调用函数,说简单点就是调用自己

一个典型阶乘递归函数:

有个问题这个函数的执行与函数名factorial 紧紧耦合在了一起。为了消除这种紧密耦合的现象,可以像下面一样使用arguments.callee

在这个重写后的factorial() 函数的函数体内,没有再引用函数名 factorial。 这样,无论引用函数时,使用的是什么名字,都可以保证正常完成递归调用

变量truefactorial 获得了 factorial 的值,实际上是在另一个位置上保存了一个函数的指针。然后我们又将一个返回0的函数赋值给factorial 变量。如果像原来的factorial() 那样不使用 arguments.callee ,调用 truefactorial() 就会返回0

 

发表评论

电子邮件地址不会被公开。