Как найти закрытие текущей функции при отладке JavaScript в vscode - PullRequest
0 голосов
/ 31 мая 2019

Я отлаживаю приложение React JS через VSCode и Chrome. В точке останова интересующая меня переменная отображается в разделе Closure списка переменных. На других уровнях трассировки стека переменная недоступна. Функция определена на верхнем уровне ее JS-файла, и я не вижу, где определено замыкание и, в частности, где переменная назначается первой. Вызывается из другого источника, переменная замыкания замыкания отличается, и я не понимаю, почему.

Есть ли способ отладки кода VS или инструментов разработчика Chrome увидеть, где была определена область закрытия?

В качестве простого примера, если при отладке кода JS ниже и достижении точки останова на a=1 есть ли способ определить переменную closureScope, в которой определен a? В реальном примере переменные области действия и замыкания явно не содержатся ни в каких других функциях или блоках, но мое понимание современных JS и замыканий ограничено, и я могу упустить что-то очевидное.

function main() {
  let closureScope = (
    function() {
    var a = 0;
    return {
      inside1: function() {
        a = 1;
      },
      inside2: function() {
        a = 2;
      }
    };
  })();

  closureScope.inside1();
  closureScope.inside2();
}

main();

Ответы [ 2 ]

2 голосов
/ 31 мая 2019

Вы можете просто использовать отладчик в vscode или chrome

  • Добавьте точку останова в коде, вы можете нажать на красную точку в левой части вашего файла, чтобы добавить точку останова
  • Или используйте debugger; там, где вы хотите установить точку останова
  • В левой части разверните список variable и затем closureScope, чтобы увидеть ваше значение в этой конкретной области

enter image description here

0 голосов
/ 31 мая 2019

Это альтернатива инструментам Chrome dev

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...