Google chrome devtools 性能主要部分callstack显示了一个调用自身的函数,但该函数不是递归的

Google chrome devtools 性能主要部分callstack显示了一个调用自身的函数,但该函数不是递归的,google-chrome-devtools,Google Chrome Devtools,我编写了一个毫无意义的JavaScript程序来研究DevTools性能选项卡是如何工作的。我的程序没有任何递归,但是主要部分显示函数test2调用自身,请参见屏幕截图: 这是什么意思?我的职能是否在内部一分为二?或者这是否意味着该报告在设计上存在不准确之处 节目如下: <p><a id="test1" href="#">Do stuff</a></p> <script> function test1(e) { conso

我编写了一个毫无意义的JavaScript程序来研究DevTools性能选项卡是如何工作的。我的程序没有任何递归,但是主要部分显示函数
test2
调用自身,请参见屏幕截图:

这是什么意思?我的职能是否在内部一分为二?或者这是否意味着该报告在设计上存在不准确之处

节目如下:

<p><a id="test1" href="#">Do stuff</a></p>
<script>
  function test1(e) {
    console.time('test1');
    var foo = [];
    for (var i = 1; i <= 1000; i++) {
      test2(foo, i);
    }
    console.timeEnd('test1');
  }

  function test2(foo, i) {
    for (var j = 1; j <= 100000; j++) {
      if (i * j % 211 === 0) {
        test3(foo);
      }
      else {
        foo.push(i * i - i);
      }
    }
  }

  var k = 0;
  function test3(foo) {
    if (k++ % 1733 === 0) {
      console.count('test3');
    }
    foo = [];
  }

  document.getElementById('test1').addEventListener('click', test1);
</script>

功能测试1(e){ 控制台时间('test1'); var foo=[];
对于(var i=1;i)这很奇怪。我通常可以复制它,但如果我在DevTools设置中启用“v8 runtime calll stats on timeline”实验(按shift键5次以在“实验”选项卡中显示),一切都会按预期进行。Chrome还有一个功能(或以前有)显示一些内部方法的计时,所以这可能会混淆它。