浅谈Javascript引擎
说到Javascript引擎,很多人既熟悉又陌生。因为虽然每天都在写很多js代码,但对于其原理及运行机制还不是很熟悉。这在系统资源充足的情况下缺陷显露不出来,但在有性能需求或是不同浏览器上需要兼容时可能问题就冒出来了。所以明白引擎的工作原理还是非常有必要的。 那什么算是引擎呢?个人觉得再计算机领域,引擎就是一种软件的转换器,将你的代码输入后产出符合机器识别和操作的命令。就拿javascript来说,引擎负责解析js代码,编译成不同环境的机器语言。但由于javascript语言是动态解释性语言,因此js引擎的性能压力就会非常大,相较于java,c++等编译型语言来说。因此,性能将是衡量现代js引擎的核心指标之一。 现在主流的js引擎是谷歌chrome的V8引擎和JavascriptCore,都属于webkit内核,webkit最早是由苹果公司提出,后来随着影响力慢慢增大,吸引很多公司共同开发。而后由于意见相左,谷歌从webkit单独切出来,自己开发了chromium系列浏览器,主打高性能,因此我们会看到在V8中引入了很多性能优化的技术;而相对的JavascriptCore则一直属于webkit内核默认的引擎,也在慢慢优化迭代。具体有哪些异同点我们来看下吧。 V8引擎 首先来看下V8整体的处理流程: 第一步都是用解析器解析,生成抽象语法树,然后使用JIT(Just In Time