rka*_*rer 6 javascript google-chrome-devtools
我有一个函数,完成后用 setTimeout() 重新排队。有人可以解释为什么 Chrome DevTools 让它看起来像是在递归调用自己吗?我的理解是每次调用都应该清楚调用堆栈。
以这个非常简单的例子为例:
<html>
  <head>
    <script>
      function main() {
        setTimeout(main, 100);  // set breakpoint here
      }
      main();
    </script>
  </head>
  <body></body>
</html>
第一次断点被击中时,我看到了这个:
经过 3 次迭代后,我看到了这一点:
Firefox 开发人员工具按照我的预期执行,每次遇到断点时只在堆栈上显示该函数的一个实例。
在 Chrome 下是否有某种我不知道的微妙参考捕获,或者这只是 DevTools UI 的事情?
要隐藏它 - 转到
Devtools Settings -> Preferences -> Debugger 
Check "Disable async stack traces"
但我强烈建议保持原样。这对于调试非常有用。