问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

【浏览器工作原理】7.v8是如何执行JavaScript代码的

发布网友 发布时间:2024-10-02 11:19

我来回答

1个回答

热心网友 时间:2024-11-02 03:40

引言

目前各种前端框架层出不穷,我们只有掌握底层本质的知识才能轻松理解上层应用,本来将从v8执行机制角度说明白一些概念和原理。

1.编译器和解释器

由于机器不能直接理解我们的代码,所以在执行程序之前,需要将代码翻译成机器能读懂的机器语言。

编译型语言:对源代码进行词法分析、语法分析生成抽象语法树(AST)-->优化代码-->生成机器码。编译成功生成一个可执行的二进制文件。

解释型语言:对源代码进行词法分析、语法分析生成抽象语法树(AST)-->生成字节码-->执行程序、输出结果

v8在执行过程中既有解释器又有编译器。

2.抽象语法树(AST)

抽象语法树是一种数据结构,是代码结构化的表示,编译器或者解释器都依赖AST。常见的两个应用场景:

babel就是利用AST将es6转换为AST,再将es6语法的AST转换为es5语法的AST,最后利用es5的AST生成JavaScript源代码。

eslint检查JavaScript编码规范,也是将源码转换为AST,再利用AST来检查代码规范问题

生成过程:先分词再解析

分词(词法分析):将一行行源码拆解成一个个token(不能再分的单个字符或者字符串),例如varmyName='极客时间';就可以分为关键字var、标识符name、赋值运算符=和字符串dd四个token。

2.解析(语法分析):将上一步生成的token数据根据语法规则转为为AST

有了AST,v8就会生成该代码的执行上下文参考上篇文章。

3.字节码(Bytecode)

有了AST和执行上下文,解释器会根据AST生成字节码,并解释执行字节码。

一开始v8没有字节码,而是直接将AST转换为机器码(消耗内存),移动端内存占用问题明显引入了字节码。

字节码就是介于AST和机器码之间的一种代码,需要解释器讲起转换为机器码后才能执行。

因为字节码占用的空间比较小,所以可以减少内存占用。

4.即时编译器(JIT)

解释器在执行字节码过程中,如果发现有热点代码(一段代码被重复执行多次),编译器就会把这段热点的字节码编译为机器码。这种字节码配合解释器和编译器的技术称为即时编译(JIT)。

通过上面概念的分析,v8执行代码主要有3个过程:

生成抽象语法树和执行上下文

基于AST生成字节码

通过解释器执行代码及通过编译器优化编译字节码

优化执行效率

了解以上流程,那么应该如何优化JavaScript执行效率?

提升单次脚本的执行速度,避免JavaScript的长任务霸占主线程

避免大的内联脚本,因为在解析html的过程中,解析和编译也会占用主线程,尽量使用异步加载aync或defer

减少JavaScript文件的容量,提升网络下载速度及占更低的内存

总结

通过本文我们了解了v8执行JavaScript的流程,相信明白了这些底层知识即使技术不断迭代我们也不会感到慌了。

原文;https://juejin.cn/post/7098549234160369672
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
个人账户养老金预测公式:现有5万元,缴费20年,能领多少钱? 临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 2013年河北威县个人承担最低档社保交费基数是多少钱 淘宝显示我的账户未实名,怎么回事啊? 努力做事才是现实吗,没白天没黑夜的做事,这人生怎么整? window7,游戏听歌都可以,但QQ语音别人听不清,是哪里没调好,怎么调啊 电脑下了字体后怎么上QQ的时候QQ字体显示不是宋体了啊 ? 怎么修改,有... 笔记本装完windows7系统耳麦QQ时语聊不能用怎么办 ...电脑Macbookpro装了双系统可是window7系统里字体很小和 Window7系统QQ语音无法解决怎么办? win7的字体模糊.比如360 QQ 浏览器 ... ...汉字就显示不全,有点想缺行,qq的头像也变的模糊了,显卡驱动都更新了... 昨天QQ更新到最新版本之后字体就变大了,删除了一次也不行。求解_百度知... 秦始皇他爸爸是谁 秦始皇的身世之谜!他是吕不韦的儿子还是异人的儿子???谢谢了,大神帮忙... 始皇帝到底是秦庄襄王子楚(异人)之子,还是秦文信侯吕不韦之子? 问:汽车总动员和玩具总动员 1、2、3部的国语版 高清 给小孩子看的 感恩... 求玩具总动员1、2中英字幕版电影下载地址。。谢谢~~~ 玩具总动员1、2、3大陆国语版 玩具总动员1,2,3电影国语版迅雷下载.哪位好心人有? 手机上网速度比上个月慢。用日语怎么说,不要谷歌问道的翻译 求安卓的斯诺游戏,单机! es6 的 import、export 和 commonjs 的 require、exports模块化分析... 南红玛瑙108颗珠子有什么特殊意义?-和田玉资讯 玩欢乐斗地主注册真实姓名花钱吗? 男的前两年长得比实际年龄小很多现在突然老了很多为什么 其实我一直深爱着你.但是你的言行举止.让我心无归属.这句话用英语怎么... 英语翻译 用英文翻译下列文字,Q_Q: 妈妈,我永远爱着你.希望你永远快乐... 电脑开机显示器无信号是什么问题啊? 田径与校园极限运动目录 美少女战士哪集小卫与小兔的感情戏份较多?麻烦说清楚第几部第几集谢谢... 收不回来的预付款怎么做账 铁路企业年金几倍返还 必须戒掉的20个生活坏习惯目录 杨丞琳的《暗涌》空间背景音乐歌曲链接MP3,不卡的!非常感谢! 求杨丞琳的暗涌 mp3链接 可以放到空间背景音乐里的 谢谢! 求《奋斗》大结局,夏琳自诉从巴黎到回国的情感那段的背景音乐 打印预览时一页一页的,怎么解决? 早上打开电脑,发现电脑好像回复到刚买电脑时的几个图标,后来下载的都... 研究生报到带什么证件 ...有一头小牛小牛他有鼻子发红流鼻涕而且还咳嗽哦拉屎汐有㴰雪_百... 我家的小奶牛拉肚子 请高人开店药方 小牛5个多月大 最近有吃野草