在学习Web前端的时候,有很多重要的知识点需要我们深刻理解并掌握实际运用场景。例如,JavaScript是Web前端人员必须要掌握的知识点之一,下面,为大家全面介绍JavaScript的工作原理,希望对大家高效学习Web前端有所帮助。

  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一样的虚拟机或者字节码解释器。这么做主要是为了减少这抽象语法树到字节码的转换时间,这一切都在网页加载时候完成,虽然可以提高优化的可能,但是这些分析可能带来巨大的时间浪费。

JavaScript的工作原理相关推荐

  1. javascript引擎工作原理的初步了解

    From:https://segmentfault.com/a/1190000014242281 Javascript引擎是能运行javascript代码的程序或解释器.做为前端开发人员,了解java ...

  2. JavaScript的工作原理:内存管理+如何处理4个常见的内存泄漏

    本篇译文,删减了原文中一些无关紧要的内容,可以让大家花更少的阅读时间. 原文地址:https://blog.sessionstack.com/how-javascript-works-memory-m ...

  3. JavaScript引擎工作原理解析

    JavaScript引擎是什么 想知道JavaScript引擎是什么,首先要知道JavaScript(简称js)是什么,相信对于屏幕前的你来说,js是干什么的已经不用再多说,但还是有必要介绍下Java ...

  4. JavaScript工作原理

    HTML代码所表示的文档是一种静态文档,几乎没有交互功能,很难使页面成为动态页面.增加脚本语言,可使数据发送到服务器之前先进行处理和校验,动态地创建新的Web内容,更重要的是,引入脚本语言使我们有了事 ...

  5. js 数组 实现 完全树_JavaScript的工作原理:解析、抽象语法树(AST)+ 提升编译速度5个技巧

    摘要: JS的"编译原理". 原文:JavaScript的工作原理:解析.抽象语法树(AST)+ 提升编译速度5个技巧 作者:前端小智 Fundebug经授权转载,版权归原作者所有 ...

  6. javascript原理_JavaScript程序包管理器工作原理简介

    javascript原理 by Shubheksha 通过Shubheksha JavaScript程序包管理器工作原理简介 (An introduction to how JavaScript pa ...

  7. JavaScript定时器的工作原理(翻译)

    JavaScript定时器的工作原理(翻译) 标签(空格分隔): JavaScript定时器 最近在看ajax原理的时候,看到了一篇国外的文章,讲解了JavaScript定时器的工作原理,帮助我很好的 ...

  8. JavaScript 工作原理之五-深入理解 WebSockets 和带有 SSE 机制的HTTP/2 以及正确的使用姿势(译)...

    原文请查阅这里,略有改动,本文采用知识共享署名 4.0 国际许可协议共享,BY Troland. 本系列持续更新中,Github 地址请查阅这里. 这是 JavaScript 工作原理的第五章. 现在 ...

  9. JavaScript 工作原理之十一-渲染引擎及性能优化小技巧

    原文请查阅这里,略有删减,本文采用知识共享署名 4.0 国际许可协议共享,BY Troland. 本系列持续更新中,Github 地址请查阅这里. 这是 JavaScript 工作原理的第十一章. 迄 ...

最新文章

  1. 非常全面的AutoML资源,看这个就够了!
  2. SMOTE 过采样的API使用
  3. 带 sin, cos 的线段树 - 牛客
  4. 数据挖掘原理与算法:Jupyter
  5. php ado,常用的php ADODB使用方法集锦
  6. linux内核态串口读写程序,linux 0.11 内核学习 -- rs_io.s,串口汇编代码
  7. Ardino基础教程 2_LED闪烁实验
  8. 支持回调处理 php函数,PHP支持回调的函数有哪些
  9. static void SetSysClockTo72(void)的一些理解
  10. Handler处理器 和 自定义Opener
  11. Python面试题解析之网络编程与并发
  12. 用javascript+PHP随机显示图片
  13. iptables的基础知识-iptables中的ICMP
  14. 社会工程学案例调研和研究
  15. 基本初等函数求导公式
  16. 百度云开发clouda学习(一)
  17. 使用jedis连接redis,关闭连接问题
  18. MuMu模拟器连接AndroidStudio脚本
  19. Spring boot——Actuator 详解
  20. CentOS7 搭建虚拟主机

热门文章

  1. 教你玩Robocode(5)——调试技巧
  2. NER命名实体识别,基于数据是字典的形式怎么识别
  3. element dialog 设置背景色
  4. 剑指-4和7幸运数字 (幸运数字 4和7)
  5. 钉钉开发系列(十一)钉钉网页扫码登录
  6. MySQL数据类型及字段属性
  7. 三菱Qplc.QD75Mh4触摸屏及plc程序,光纤伺服通讯
  8. 优秀!研二实习生“阿里+字节+拼多多+美团”四杀offer
  9. 14西安区域赛总结帖
  10. java怎么开始编写代码_Java编程入门:开始用Java编写代码