javascript - 在递归代码中使用Javascript function.caller 进行堆栈跟踪?

标签 javascript stack-trace

在 javascript 中,我可以使用 foo.caller 来获取对堆栈跟踪中 foo 上方函数的引用。但是,当一个函数在同一个堆栈跟踪中多次出现时,这不起作用,foo.caller 仅返回 foo。

是否有一种稳定的跨平台方法可以在 Javascript 中获取完整的堆栈跟踪?我不想想要获得可打印的堆栈跟踪;相反,我正在执行堆栈检查,以查看某个方法是否位于堆栈中我上方的任何位置。这是我当前的代码:

function inFunction(foo) {
    var caller = inFunction.caller;
    var maxDepth = 20;
    while(caller && --maxDepth > 0) {
        if(caller == foo)
            return true;
        caller = caller.caller;
    }
    return false;
}

有什么想法如何处理堆栈跟踪中多次存在的函数吗?

最佳答案

抱歉,没有。一旦在跟踪中遇到递归函数,就不可能到达调用函数。

在为 Sun Microsystems 使用 JavaScript 编写 IDE 时,我花了几天时间试图找到解决方法。没有。

关于javascript - 在递归代码中使用Javascript function.caller 进行堆栈跟踪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5383903/

相关文章:

javascript - 为什么涉及 if 语句的 JavaScript 计算不起作用?

winforms - 在堆栈跟踪中获取 VB.NET 行号

profiling - 为什么 valgrind Massif 不报告任何函数名称或代码引用?

javascript - Three.js 渲染完成

javascript - div 中的第 n 个类型不起作用

javascript - 传递 url 时保留原始反斜杠的问题

go - 从二进制文件中一致地构建/删除个人信息

python - 在 python 中定位(文件/行)构造函数的调用

android - 帮助阅读 Android 中的 ANR 堆栈跟踪

javascript - 从查询字符串中提取数据,然后调用 API 和呈现组件的最佳位置是什么?