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

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


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

最佳答案

确保调用正确函数的最佳方法是不要依赖于此并且不要使用匿名函数。给您一个函数一个临时名称,然后这样称呼它。

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


如果您仅使用此名称进行递归调用,则通常以一个大写字母来调用它。

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

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

09-27 01:26
查看更多