【问题标题】:Function scope tracing possible in JavaScript?JavaScript 中可以进行函数范围跟踪吗?
【发布时间】:2018-11-05 15:21:33
【问题描述】:

我目前正在为 JavaScript(我还没有进入)应用程序开发日志接口,我想知道是否可以在 JS 中跟踪函数范围。

在 C++ 中我可以做某事。喜欢

int some_function(int arg1) {
    function_tracer(__PRETTY_FUNCTION__);
    do_something();
}

它适用于RAII idiom,在 Python 中我会使用装饰器:

@function_tracer
def some_function(arg1)
    do_something()

这两种方法都可以感知函数范围(至少在某种程度上),与上述 enter_scope() / leave_scope() 方法相比具有以下优势:

  • 我根本不用写leave()-Call
  • 多个return 语句不需要多个leave() 调用
  • 最重要的是:它是异常安全的!

如何在 JavaScript 中做到这一点?我发现的示例将要跟踪的函数作为包装函数的参数(如 Python 中的装饰器)。

这是在 JavaScript 中执行此操作的唯一方法吗?

你的方法是什么?

【问题讨论】:

  • 您到底想达到什么目的?如果要访问 Function 调用的堆栈,在大多数浏览器上,Error 对象上都有一个非标准的 .stack 属性,因此您可以通过 new Error('trace').stack 将其作为字符串访问,但没有标准化格式。 .

标签: javascript function scope trace


【解决方案1】:

当您打开调试器然后在控制台中选择Sources 选项卡时,您可以在 RHS 上看到 Call Stack Scope。确保您在特定代码行上设置了调试点,以了解其调用堆栈和范围。

【讨论】:

    猜你喜欢
    • 2013-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-05
    相关资源
    最近更新 更多