浏览器ui线程的一个小疑问?
发布于 5 年前 作者 beilunyang 2899 次浏览 最后一次编辑是 4 年前 来自 问答

今天读到《高性能JavaScript》中的关于ui线程的章节,里面说到里ui队列,然后我的疑问就来了。代码:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
	<title>无标题</title>
</head>
<body>
	<script type="text/javascript">
		var div =document.createElement('div');
		div.innerHTML = '我是div';
		document.body.appendChild(div);
		if(document.getElementsByTagName('div')[0]){
			console.log('有');
		}else{
			console.log('无');
		}
		
	</script>
</body>
</html>

按照书上说的,这段代码应该会产生一个新的ui更新,即document.body.appendchild,并且会被添加到ui队列中。。当脚本全部执行完成后,才会执行ui更新。。那么,appenChild后面的代码,为什么会执行console.log(‘有’),而不是 ‘无’ 呢。。

1 回复

记忆力里 JavaScript 执行就差同步的, 或者说当代码去访问 DOM 的时候, 原来队列的操作会被先执行掉.

回到顶部