for (var i = 0; i < 1000000; i ++) document.body.innerHTML = i;
明白使用setTimeout可以实现数字递增的效果,但是不明白为什么上面这段代码在浏览器上是看不到数字递增的感觉,而是一次就刷新到了最大值?这个是浏览器优化了什么吗?
for (var i = 0; i < 1000000; i ++) document.body.innerHTML = i;
明白使用setTimeout可以实现数字递增的效果,但是不明白为什么上面这段代码在浏览器上是看不到数字递增的感觉,而是一次就刷新到了最大值?这个是浏览器优化了什么吗?
13 回答13.1k 阅读
7 回答2.3k 阅读
3 回答1.4k 阅读✓ 已解决
6 回答1.5k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
3 回答1.5k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
这里的for是同步执行的,也就是一直霸占线程不放,而js是单线程生物,负责渲染的部分(赋值给innerHTML不等于渲染,只是告诉浏览器在渲染时需要显示的内容)需要等到这段代码结束后才有机会执行,这时innerHTML的值是什么就显示什么,中间过程你看不到了