iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >V8是怎么执行一段JavaScript代码的
  • 705
分享到

V8是怎么执行一段JavaScript代码的

2023-07-06 00:07:43 705人浏览 八月长安
摘要

这篇文章主要讲解了“V8是怎么执行一段javascript代码的”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“V8是怎么执行一段JavaScript代码的”吧!编译器和解释器之所以存在编译器

这篇文章主要讲解了“V8是怎么执行一段javascript代码的”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“V8是怎么执行一段JavaScript代码的”吧!

    编译器和解释器

    之所以存在编译器和解释器,是因为机器不能直接理解我们所写的代码,所以在执行程序之前,需要将我们所写的代码“翻译”成机器能读懂的机器语言。按语言的执行流程,可以把语言划分为编译型语言和解释型语言。

    编译型语言在程序执行之前,需要经过编译器的编译过程,并且编译之后会直接保留机器能读懂的二进制文件,这样每次运行程序时,都可以直接运行该二进制文件,而不需要再次重新编译了。比如 C/C++Go 等都是编译型语言。

    而由解释型语言编写的程序,在每次运行时都需要通过解释器对程序进行 动态解释和执行。比如 python、JavaScript 等都属于解释型语言。

    编译器解释器 是如何“翻译”代码的呢?具体流程你可以参考下图:

    V8是怎么执行一段JavaScript代码的

    1. 生成抽象语法树(AST)和执行上下文

    编译器或者解释器后续的工作都需要依赖于 AST,而不是源代码。

    Babel 的工作原理就是先将 es6 源码转换为 AST,然后再将 ES6 语法的 AST 转换为 ES5 语法的 AST,最后利用 ES5 的 AST 生成 JavaScript 源代码。

    ESLint 是一个用来检查 JavaScript 编写规范的插件,其检测流程也是需要将源码转换为 AST,然后再利用 AST 来检查代码规范化的问题。

    通常,生成 AST 需要经过两个阶段:

    第一阶段是分词(tokenize),又称为 词法分析。其作用是将一行行的源码拆解成一个个语法上不可能再分的、最小的单个字符或字符串

    第二阶段是解析(parse),又称为 语法分析。其作用是将上一步生成的数据,根据语法规则转为 AST。如果源码符合语法规则,这一步就会顺利完成。但如果源码存在语法错误,这一步就会终止,并抛出一个“语法错误”。有了 AST 后,那接下来 V8 就会生成该段代码的执行上下文。

    2. 生成字节码

    有了 AST 和执行上下文后,那接下来的第二步,解释器 Ignition 就登场了,它会根据 AST 生成字节码,并解释执行字节码。

    字节码就是介于 AST 和机器码之间的一种代码。但是与特定类型的机器码无关,字节码需要通过解释器将其转换为机器码后才能执行。使用字节码可以减少系统的内存使用。

    3. 执行代码

    生成字节码之后,接下来就要进入执行阶段了。解释器 Ignition 除了负责生成字节码之外,它还有另外一个作用,就是解释执行字节码。

    在 Ignition 执行字节码的过程中,如果发现有热点代码(HotSpot),比如一段代码被重复执行多次,这种就称为 热点代码,那么后台的编译器 TurboFan 就会把该段热点的字节码编译为 高效的机器码,然后当再次执行这段被优化的代码时,只需要执行编译后的机器码就可以了,这样就大大提升了代码的执行效率。

    其实字节码配合解释器和编译器是最近一段时间很火的技术,比如 Java 和 Python虚拟机也都是基于这种技术实现的,我们把这种技术称为 即时编译(JIT)。具体到 V8,就是指解释器 Ignition 在解释执行字节码的同时,收集代码信息,当它发现某一部分代码变热了之后,TurboFan 编译器便闪亮登场,把热点的字节码转换为机器码,并把转换后的机器码保存起来,以备下次使用。

    JavaScript 的性能优化

    对于优化 JavaScript 执行效率,应该将优化的中心聚焦在 单次脚本的执行时间脚本的网络下载 上,主要关注以下三点:

    提升单次脚本的执行速度,避免 JavaScript 的长任务霸占主线程,这样可以使得页面快速响应交互。

    避免大的内联脚本,因为在解析 html 的过程中,解析和编译也会占用主线程。

    感谢各位的阅读,以上就是“V8是怎么执行一段JavaScript代码的”的内容了,经过本文的学习后,相信大家对V8是怎么执行一段JavaScript代码的这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

    --结束END--

    本文标题: V8是怎么执行一段JavaScript代码的

    本文链接: https://www.lsjlt.com/news/356790.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • V8是怎么执行一段JavaScript代码的
      这篇文章主要讲解了“V8是怎么执行一段JavaScript代码的”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“V8是怎么执行一段JavaScript代码的”吧!编译器和解释器之所以存在编译器...
      99+
      2023-07-06
    • 详解V8是如何执行一段JavaScript代码原理
      目录前言编译器和解释器1. 生成抽象语法树(AST)和执行上下文2. 生成字节码3. 执行代码JavaScript 的性能优化前言 了解 V8 的执行机制,能帮助你从底层了解 Ja...
      99+
      2023-05-15
      V8 执行JavaScript原理 V8 JavaScript
    • V8引擎是怎样执行JavaScript代码
      V8引擎是怎样执行JavaScript代码,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 题目中说到的V8引擎,大家自然会联想到No...
      99+
      2024-04-02
    • V8引擎如何执行JavaScript代码
      V8引擎如何执行JavaScript代码,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。题目中说到的V8引擎,大家自然会联想到Node.js。我们先看一下官方对Node.js的定...
      99+
      2023-06-16
    • vue中怎么持续执行一段代码
      本篇内容介绍了“vue中怎么持续执行一段代码”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、使用setInterval方法setInter...
      99+
      2023-07-06
    • 浅谈一段java代码是如何执行的
      目录1. 编译成class2. jvm的构成3. 方法的顺序执行和栈帧4. class文件反编译过后的样子5. 指令集详解本文分享自华为云社区《一段java代码是如何执行的》,原文作...
      99+
      2024-04-02
    • jsp中怎么执行javascript代码
      这篇文章主要介绍了jsp中怎么执行javascript代码的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇jsp中怎么执行javascript代码文章都会有所收获,下面我们一起来...
      99+
      2024-04-02
    • Node.js V8 引擎与代码缓存:提高 JavaScript 执行速度的利器
      代码缓存 代码缓存是一种优化技术,可存储 JavaScript 代码的编译版本,以便在后续执行时快速访问。这提高了 JavaScript 代码的执行速度,因为它消除了编译代码的开销,尤其是对于经常执行的代码段。 V8 引擎与代码缓存的协同...
      99+
      2024-04-02
    • 怎么在启动Jupyter Notebook时自动执行一段代码
      本篇内容主要讲解“怎么在启动Jupyter Notebook时自动执行一段代码”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么在启动Jupyter Notebook时自动执行一段代码”吧!在我...
      99+
      2023-06-16
    • JavaScript引擎怎么执行JS代码
      这篇文章主要为大家展示了“JavaScript引擎怎么执行JS代码”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JavaScript引擎怎么执行JS代码”这篇文...
      99+
      2024-04-02
    • 在Chrome中怎么执行JavaScript代码
      这篇“在Chrome中怎么执行JavaScript代码”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“在Chrome中怎么执行...
      99+
      2023-06-29
    • JavaScript函数内部的代码怎么执行
      这篇文章主要介绍“JavaScript函数内部的代码怎么执行”,在日常操作中,相信很多人在JavaScript函数内部的代码怎么执行问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
      99+
      2024-04-02
    • java计算代码段执行时间的详细代码
      java里计算代码段执行时间可以有两种方法,一种是毫秒级别的计算,另一种是更精确的纳秒级别的计算。 一)毫秒级别计算时间 long startTime = System.curren...
      99+
      2024-04-02
    • 怎么在JavaScript函数内执行全局代码
      本篇内容主要讲解“怎么在JavaScript函数内执行全局代码”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么在JavaScript函数内执行全局代码”吧!先...
      99+
      2024-04-02
    • 如何解决Jquery $.ajax函数外的一段代码的执行顺序
      本篇内容主要讲解“如何解决Jquery $.ajax函数外的一段代码的执行顺序”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何解决Jquery $.ajax函...
      99+
      2024-04-02
    • 怎么在JavaScript脚本中执行java后台代码
      怎么在JavaScript脚本中执行java后台代码,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。使用场景:关闭页面弹窗时执行...
      99+
      2024-04-02
    • java代码块执行顺序是怎样的
      本文小编为大家详细介绍“java代码块执行顺序是怎样的”,内容详细,步骤清晰,细节处理妥当,希望这篇“java代码块执行顺序是怎样的”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1、类的静态代码块、结构代码块、结...
      99+
      2023-06-30
    • php代码执行过程是什么
      PHP代码执行过程包括以下步骤:1. 服务器接收到客户端的HTTP请求,查找对应的PHP文件。2. 服务器调用PHP解释器(如PHP...
      99+
      2023-08-29
      php
    • Node.js V8 引擎的未来之路:下一代 JavaScript 运行时的愿景
      持续性能优化 性能一直是 V8 引擎的核心关注点。未来,V8 将继续专注于优化性能,提高执行速度和减少内存占用。这包括改进编译器、垃圾回收器和其他关键组件。 更好的并发支持 随着 Web 应用程序变得越来越复杂,对并发支持的需求也越来越高...
      99+
      2024-04-02
    • java代码块的执行顺序是什么
      Java代码块的执行顺序如下: 静态代码块:静态代码块在类加载时执行,并且只执行一次。它用来初始化静态变量或执行一些只需执行一次...
      99+
      2023-10-24
      java
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作