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