javascript - 在 vscode 中调试 JavaScript 时如何找到当前函数的闭包

标签 javascript visual-studio-code closures

我正在通过 VSCode 和 Chrome 调试 React JS 应用程序。在断点处,我感兴趣的变量在变量列表的“闭包”部分中可见。在堆栈跟踪的其他级别,该变量不可用。该函数是在其 JS 文件的顶层定义的,我看不到闭包的定义位置,特别是变量首次赋值的位置。从其他地方调用的闭包作用域变量是不同的,我不明白为什么。

VS Code 调试或 Chrome 开发工具中有什么方法可以查看闭包范围的定义位置吗?

举个简单的例子,如果调试下面的 JS 代码并在 a=1 处命断点,有什么方法可以识别定义了 a 的closureScope变量?在真实的例子中,函数和闭包作用域变量显然没有包含在任何其他函数或 block 中,但我对现代 JS 和闭包的理解是有限的,我可能会遗漏一些明显的东西。

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

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

main();

最佳答案

您可以简单地在 vscodechrome 中使用调试器

  • 在代码中添加断点,您可以点击文件左侧的红点来添加断点
  • 或者在您想要断点的地方使用debugger;
  • 在左侧展开变量列表,然后closureScope查看您在该特定范围内的值

enter image description here

关于javascript - 在 vscode 中调试 JavaScript 时如何找到当前函数的闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56393930/

相关文章:

javascript - Angular 路由不显示内容

visual-studio-code - 我可以在新的 Samsung Chromebook Pro 上使用 VS Code 进行开发吗?

logging - vscode在终端打印太多登录

javascript - JavaScript 中的闭包并运行一次函数

javascript - 如何在JS中循环使用Id名称?

javascript - 自调用函数 jQuery

javascript - d3.select(this) 返回什么?

Python 方法不会出现在用户定义的函数中

JavaScript 闭包操作

xcode - 嵌套函数中首先执行的是什么?