为什么操作DOM慢

503 阅读1分钟

把DOM和javascript各自想象成一个岛屿,它们之间用收费桥梁连接 --《高性能javascript》

JS很快的,JS修改DOM也是很快的。在JS世界里,一切是简单的、迅速的。但DOM操作并非JS一个人的独舞,而是两个模块之间的协作。

因为DOM是属于渲染引擎中的东西,而且JS又是JS引擎中的东西。当我们用JS去操作DOM时,本质上是JS引擎和渲染引擎之间进行了“跨界交流”。这个“跨界交流”的实现并不简单,它依赖了桥接接口作为“桥梁”(如下图)。

过“桥”要收费————这个开销本身就是不可忽略的。我们没操作一次DOM(不管是为了修改还是访问其值),都要过一次“桥”,过“桥”的次数一多,就会产生明显的性能问题》因此减少DOM操作的建议,并非空穴来风