JavaScript引擎工作原理_好程序员IT的博客-程序员宝宝_javascript引擎工作原理

技术标签: 好程序员  JavaScript  web前端培训  javascript  

好程序员web培训分享JavaScript引擎工作原理,JavaScript是Web前端人员必须要掌握的知识点之一,也是一门高级语言。最初JavaScript只是在Web浏览器中运行,随着Node的出现,JavaScript也可以在服务端运行。
  下面给大家讲解一下JavaScript引擎工作原理。
  JavaScript引擎是什么?
  JavaScript引擎是一种用于将我们的代码转换为机器可读语言的引擎。如果没有JavaScript引擎,你编写的代码对计算机来说简直是一堆“胡言乱语”。不仅仅是JavaScript,其他所有编程语言都需要一个类似的引擎,来将这些“胡言乱语”转换成对计算机有意义的语言。
  JavaScript引擎的组成部分有哪些?
  1、编译器。主要工作是将源代码编译成抽象语法树,然后在某些引擎中还包含将抽象语法树转换成字节码。
  2、解释器。在某些引擎中,解释器主要是接受字节码,解释执行这个字节码,然后也依赖来及回收机制等。
  3、JIT工具。一个能够JIT的工具,将字节码或者抽象语法树转换成本地代码,当然它也需要依赖牢记垃圾回收器和分析工具(profiler)。它们负责垃圾回收和收集引擎中的信息,帮助改善引擎的性能和功效。
  JavaScript引擎是如何工作的?
  JavaScript的工作形式取决于是什么引擎。目前比较常用的JavaScript引擎有两个:WebKit的JavaScriptCore和Google的V8引擎。这两个引擎处理代码的方式是不同的。JavaScriptCore: 源代码=》抽象语法树=》字节码
  1、词法分析,将源代码分解成一系列具有明确含义的符号或字符串(分词);
  2、用词法分析器分析这些符号,将其构建成抽象语法树;
  3、解析器生成字节码(编译器可以理解);
  4、4个JIT(Just-In-Time)进程参与进来,分析和执行解析器所生成的字节码。谷歌的V8引擎,用C++编写,也编译和执行JavaScript源代码、处理内存分配、垃圾收集剩余物。V8引擎并不将抽象语法树转变成字节码或者其它中间表示,没有像Java一样的虚拟机或者字节码解释器。这么做主要是为了减少这抽象语法树到字节码的转换时间,这一切都在网页加载时候完成,虽然可以提高优化的可能,但是这些分析可能带来巨大的时间浪费。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_35970166/article/details/107665362

智能推荐

springboot与数据访问整合mybatis与springData JPA_pshdhx_albert的博客-程序员宝宝_spring boot 整合mybatis和spring data

1、jdbc<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring‐boot‐starter‐jdbc</artifactId></dependency><dependency> <groupId>mysql</groupId> <artifactId>

如何搭建Android的开发环境->在虚拟机上安装unbuntu 10.04 (二)_eastmingchen的博客-程序员宝宝

在Vmare7.0上安装unbuntu 10.04 的第一步 创建一个新的VM 打开Vmware Workstation选着“custom ”点击“ next”点击“Next”选择“I will install the operation system later“点击”Next“注意:建议不要选择install

hdu2177取(2堆)石子游戏_cnzhanj的博客-程序员宝宝

有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。如果你胜,你第1次怎样取子?

python绘制3d图-Python绘制3D图形_weixin_37988176的博客-程序员宝宝

3D图形在数据分析、数据建模、图形和图像处理等领域中都有着广泛的应用,下面将给大家介绍一下如何使用python进行3D图形的绘制,包括3D散点、3D表面、3D轮廓、3D直线(曲线)以及3D文字等的绘制。准备工作:python中绘制3D图形,依旧使用常用的绘图模块matplotlib,但需要安装mpl_toolkits工具包,安装方法如下:windows命令行进入到python安装目录下的Scrip...

随便推点

JQMIGRATE: Migrate is installed, version 1.4.1_GaiMingZhong的博客-程序员宝宝_jqmigrate

The only way to remove the notice is to ensure all your plugins/theme code don’t rely on any old jQuery functionality, and then remove the migrate script:add_action( 'wp_default_scripts', function( $s...

template.java,SpringTemplate没有为响应类型找到合适的HttpMessageConverter_Peter Tam的博客-程序员宝宝

I am getting the following error while using spring rest template but i have defined jackson for json responses.As well when I query to the url with rest client i get a good response.org.springframewo...

HTML嵌套元素水平垂直居中的几种方式_赛跑的乌龟的博客-程序员宝宝

方式一:通过外边距调整,根据父子元素的宽高来计算外边距的值。(父子都是块级元素)注意:如果两个盒子是嵌套关系, 有时候设置了里面一个盒子(子元素)顶部的外边距, 外面一个盒子(父元素)也会被顶下来。 解决办法:https://blog.csdn.net/zyj123__/article/details/106906240方式二:给父元素设置绝对定位,子元素设置相对定位(子绝父相),然后给子元素设置top:0,bottom:0,left:0,right:0,margin:...

Jaccard系数与Jaccard距离_张博208的博客-程序员宝宝

Jaccard(杰卡德)系数主要用于计算样本间的相似度。Jaccard系数的计算方式为:样本交集个数和样本并集个数的比值,用J(A,B)表示。公式为:  jaccard系数相反的即为jaccard距离,用两个集合中不同元素所占元素的比例来衡量两个样本之间的相似度,公式为:  Jaccard系数主要的应用的场景有 1.过滤相似度很高的新闻,或者网页去重 2.考试防作弊系统 3.论文查重系统 举个栗子...

慕课软件工程(第十七章.习题5.2)_mozhimen的博客-程序员宝宝

慕课北京大学.软件工程.第十七章.软件测试-1.习题5.20 目录17 软件测试-117.3 习题5.217.3.1课堂重点17.3.2测试与作业18 下一章0 目录17 软件测试-117.3 习题5.217.3.1课堂重点17.3.2测试与作业1、现有一段判定三角形类型的程序,可以根据输入的三角形的三边长来判定构成的三角形是否为等腰三角形。请用等价类规划法来为此段代码设计测试用例。...

应梦框架9.0框架_.Net框架能力问题和解答_cumt951045的博客-程序员宝宝

应梦框架9.0框架This section contains Aptitude Questions and Answers on .Net Framework. 本节包含有关.Net Framework的能力问题和解答。 1) There are the following options are given below, what are parts of the .NET Framew...

推荐文章

热门文章

相关标签