javascript对象递归函数

时间:2015-05-16 18:30:11

标签: javascript recursion yui

大家好我在yui对象中有以下功能:

fun1: function (x){
    ....
    if (condition)
        this.fun1(x-1);
}

但我在调试模式中看到指令this.fun1(x-1)引发了错误: 未捕获的TypeError:undefined不是函数 怎么解决呢?

2 个答案:

答案 0 :(得分:2)

确保调用正确函数的最佳方法不是依赖于此而不是使用匿名函数。给你一个临时名称,并像这样调用它。

var obj ={
fun : function Q(a){
    if(a>0){
        return Q(a-1) + a;
    }
    return 0;
  }
}

通常的做法是用一个大写字母调用它,如果你只用这个名字来调用它来递归。

尝试并始终为您的函数命名,因为这样更容易调试(函数名称将显示在调用跟踪中)

请注意,在javascript中使用递归可能会很危险,因为javascript没有尾调用优化,如果您不小心,可以轻松运行堆栈溢出。

答案 1 :(得分:0)

在用于定义对象的对象文字表示法中,避免使用它,因为这引用了窗口对象。相反,您可以使用您正在创建属性的对象名称。

var obj = {
   testfunction: function() {
        obj.testfunction();
   }
};