Возможна ли трассировка области действия в JavaScript? - PullRequest
0 голосов
/ 05 ноября 2018

В настоящее время я работаю над интерфейсом протоколирования для приложения JavaScript (которое пока не используется), и мне интересно, можно ли отслеживать область действия функции в JS.

В C ++ я мог бы сделать что-то как

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

, который работает с RAII идиомой , а в Python я бы использовал декораторы:

@function_tracer
def some_function(arg1)
    do_something()

Оба подхода учитывают область действия функции (по крайней мере, в некоторой степени) со следующими преимуществами по сравнению с подходом enter_scope() / leave_scope(), как описано:

  • Мне вообще не нужно писать leave() -Call
  • несколько return операторов не требуют нескольких leave() вызовов
  • самое главное: исключение безопасно!

Как мне это сделать в JavaScript? Примеры, которые я нашел, помещают функции для отслеживания в качестве аргументов функции-оболочки (как в случае с декораторами в Python).

Это единственный способ сделать это в JavaScript?

Какие у вас подходы?

1 Ответ

0 голосов
/ 05 ноября 2018

enter image description here

Вы можете увидеть Call Stack Scope на RHS, когда откроете отладчик и затем выберите вкладку Sources в консоли. Убедитесь, что в конкретной строке кода установлена ​​точка отладки, чтобы знать ее стек вызовов и область действия.

...