我有一个尾递归寻路算法,我已经在Javascript中实现,并想知道是否有任何(所有?)浏览器可能会得到堆栈溢出异常.
假设我有类似的东西
function animate(param)
{
// ...
if (param < 10)
setTimeout(function () { animate(param + 1) }, 100);
}
animate(0);
Run Code Online (Sandbox Code Playgroud)
这是否意味着函数的本地数据的每个实例都将保存在内存中,直到有效完成,即直到param达到10?
如果实例保存在内存中,有没有更好的方法呢?我知道,传递文本代码来setTimeout()解决问题,但在我的情况下,函数参数中的对象不能轻易地表示为字符串.