美文网首页
JS运行原理

JS运行原理

作者: small_zeo | 来源:发表于2021-02-28 15:59 被阅读0次

前言

我们把偏向硬件的语言称为低级语言,可以通过低级语言直接来控制硬件的行为,最低级的语言就是机器语言
而把偏向人类, 人类更易读的语言称为高级语言,可以通过高级语言间接的控制硬件的行为,最高级的语言就是人类的语言

高级语言和低级语言对比

越高级的语言越简单越抽象,更方便读和写,但执行效率越差,高级语言需要逐步转换成更低级的语言才能被硬件使用,越高级中间的转化时间越长,效率越低

越低级的语言执行速度越快,但是不易读,很难编写代码,并且编写的代码容易出错,比如很难做内存管理,经常导致内存泄漏并且很难追踪、解决问题,同时低级语言很难兼容众多的CPU平台

image.png

Javascript就是一门高级语言

运行时编译(Just-In-Time Compilation)

Javascript是一门动态类型语言,它虽然是一门动态语言,但执行起来依然很快,尤其是在启动时,用node运行一段代码,几乎瞬间完成,这是因为现代的Javascript引擎都是用了一项技术:
Just-In-Time Compilation(运行时编译JIT),JIT就是在运行阶段生成机器代码,JIT把代码的运行和生成机器代码是结合在一起的,在运行阶段收集类型信息,然后根据这些信息编译生成机器码,之后再运行这些代码时,就直接使用生成好的机器代码。


image.png
Javascript引擎

Javascript是一门高级语言,它被计算机CPU执行前,需要通过某种程序将JS转换成低级的机器语言并执行。这种程序就被称做为Javascript引擎,比如:
谷歌Chrome使用的V8引擎
webkit使用的JavaScriptCore
Mozilla的SpiderMonkey
FeacBook的QuickJS
React Native的Hermes
虽然引擎众多,但在编译javascript的流程是差不多的


image.png
Javascript引擎编译js的流程

首先将JS源码通过解析器,解析成抽象语法树AST,接着再通过解析器将AST编译成字节码bytecode,字节码是跨平台的一种中间表示,不同于最终的机器代码,字节码与平台无关,能够在不同操作系统上运行,字节码最后通过编译器生成机器代码。由于不同的平台使用的机器代码会有差异,所以编译器会根据当前平台来编译出相应的机器代码,这里的机器码其实就是汇编代码。


image.png
image.png
image.png

小结

拓展学习最著名的V8引擎的一个工作原理,更深入理解JS引擎的运行机制。

参考学习视频: https://www.bilibili.com/video/BV1vh411Z7QG

相关文章

  • JavaScript 究竟是怎样执行的?

    摘要: 理解 JS 引擎运行原理。 作者:前端小智 原文:搞懂 JavaScript 引擎运行原理 Fundebu...

  • JS运行原理

    前言 我们把偏向硬件的语言称为低级语言,可以通过低级语言直接来控制硬件的行为,最低级的语言就是机器语言而把偏向人类...

  • 作用域、作用域链

    写出下面代码执行之后的结果,并分析原理 执行结果 原理分析考察点是js在浏览器中的运行机制 浏览器在运行js代码之...

  • JavaScript 运行原理解析

    关于Js的运行原理,《JavaScript 运行原理解析》这篇文章写的很易懂,而且想要了解更深入,文章的参考链接都...

  • js高级之js运行原理

    1.浏览器渲染过程 1.1 下载文件【掌握】 当我们输入一个网址之后,dns服务器将网址中的域名解析为ip地址(服...

  • JS引擎是如何工作的?从调用堆栈到Promise

    摘要: 理解 JS 引擎运行原理。 作者:前端小智 原文:JS引擎:它们是如何工作的?从调用堆栈到Promise,...

  • js 运行原理解析

    关于JavaScript 如何工作的,由以下这几个概念 JS Engline (JS引擎) Runtime(运行上...

  • JavaScript 是如何运行的?

    摘要: 理解JS执行原理。 原文:JavaScript 是如何运行的? 作者:hengg Fundebug经授权转...

  • 前端问(面试)题

    dom执行顺序 事件委托原理 原型链的作用,与作用域链的区别 js事件轮询原理、JavaScript的运行机制 结...

  • 1.4 java开发必备技能

    ----初级1、java开发,编译,运行;2、jvm基本原理,jvm安装;3、http基础,html、css,js...

网友评论

      本文标题:JS运行原理

      本文链接:https://www.haomeiwen.com/subject/fyfgfltx.html