JS为单线程;浏览器为多线程;
JS为单线程;
浏览器为多线程;
通常讲到浏览器的时候,我们会说到两个引擎:渲染引擎和JS引擎。渲染引擎就是如何渲染页面,Chrome/Safari/Opera用的是Webkit引擎,IE用的是Trident引擎,FireFox用的是Gecko引擎。
JS引擎可以说是JS虚拟机,负责JS代码的解析和执行。通常包括以下几个步骤:
词法分析:将源代码分解为有意义的分词
语法分析:用语法分析器将分词解析成语法树
代码生成:生成机器能运行的代码
代码执行
不同浏览器的JS引擎也各不相同,Chrome用的是JS V8引擎,FireFox用的是SpiderMonkey,Safari用的是JavaScriptCore,IE用的是Chakra。
之所以说JavaScript是单线程,就是因为浏览器在运行时只开启了一个JS引擎线程来解析和执行JS。那为什么只有一个引擎呢?如果同时有两个线程去操作DOM,浏览器是不是又要不知所措了。