parentNode在Javascript内部关闭时丢失了吗?Chrome bug?

log*_*lic 6 html javascript closures garbage-collection google-chrome

当我在Chrome中执行以下测试HTML页面时,我在调试控制台中看到以下内容:

Has parent? true
Has parent? false
Run Code Online (Sandbox Code Playgroud)

我是否正确地认为这是一个Chrome错误(在其他浏览器中不会发生),或者Chrome是否因为某些原因而有权执行此操作?它导致了我的一个网络应用程序中的错误,我最终将此片段隔离出来以重现核心问题.

这是测试页面:

<!DOCTYPE HTML>
<html>
  <head>
    <meta charset="UTF-8">
    <title></title>
  </head>
  <body class="">
      
      
      <script>
        function testDoodle() {
          var testParentEl = document.createElement('div');
          var testChildEl  = testParentEl.appendChild(document.createElement('div'));
          
          document.body.innerHTML+=('Has parent? ' + !!testChildEl.parentNode+'<br>');
          console.log('Has parent? ' + !!testChildEl.parentNode);
          
          setTimeout(function() {
              document.body.innerHTML+=('Has parent? ' + !!testChildEl.parentNode+'<br>');
              console.log('Has parent? ' + !!testChildEl.parentNode);
          },
          2000);
          return;
        }
        testDoodle();
      </script>

  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

编辑:我应该提到我正在使用Chrome 49.0.2623.87 m(64位)在Windows 7上进行测试.还可以使用Chrome 49重新编写OSX 10.11.2.

另外,我应该提到有时它显示真/真,有时真/假.您可能需要重新加载页面几次才能看到问题.我不确定,但调试工具(控制台)也可能需要打开.

非常感谢.

log*_*lic 0

我相信 Chrome v50 最终解决了这个问题(或者至少自从更新以来我无法重现)。