在递归滚动到页面底部时,javascript中的堆栈溢出错误?

时间:2013-07-09 05:16:11

标签: javascript dom twitter recursion

我试图以递归方式滚动到twitter页面的底部,直到该页面显示用户的所有关注者。每次到达底部时,它将加载另一个段,直到没有剩余的加载。

function findStats(){
   a = $("a.js-nav");
   for(i = 0; i < a.length; i++){
     if(a[i].dataset.elementTerm === "follower_stats"){
        return a[i];}
     }
}

numberOfFol = function() {
    return Number(findStats().innerText.match(/\d+/)[0]);
}


var bottom = function(){
    scrollTo(0,document.height - $(window).height());
    if($(".fullname.js-action-profile-name").length<numberOfFol()){
        bottom();
    }
}

我尝试了一个带循环的非递归版本的bottom(),每次页面冻结时,在我最后一次递归尝试时,控制台最终都会抛出最大堆栈大小超出错误。我在循环中尝试了setTimeout,因为页面需要加载时间,但同样的事情发生了(这是非递归底部函数)。非递归底函数是

var bottom = function(){scrollTo(0,document.height - $(window).height())}

更奇怪的是,如果我自己调用非递归底部函数,它可以正常工作并且可以毫无问题地到达页面底部(当然只有一次)。

为什么这些函数在递归/循环中会溢出堆栈?

0 个答案:

没有答案