ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JavaScript高级---浏览器原理-V8引擎-js执行原理

2021-12-01 03:00:06  阅读:155  来源: 互联网

标签:浏览器 编程语言 JavaScript js 引擎 V8 原理 执行


 

1.JavaScript是一门高级的编程语言。

有高级编程语言,就有低级编程语言,从编程语言发展历史来说,可以划分三个阶段:

  • 机器语言:10001000111,一些机器指令;
  • 汇编语言:mov ax ,bx,一些汇编指令;
  • 高级语言:C、C++、Java、Javascript、Python

但是计算机本身不认识这些高级语言,所以我们的代码最终需要被转换成机器指令:

 

 

 

 

2. 浏览器的工作原理

有没有深入考虑过:JavaScript代码,在浏览器是如何被执行的?

 

 

 

3.浏览器内核

我们经常听说:不同的浏览器有不同的内核组成

Gecko:早期被Netscape和Mozilla Firefox浏览器使用;

Trident:微软开发,被IE4-IE11浏览器使用,但是Edge浏览器已经转向blink

blink:是Webkit的一个分支,Google开发,目前应用于Google Chrome、Edge、Opera等

 

 

4.浏览器渲染过程

在执行过程中,HTML解析的时候遇到JavaScript标签,应该怎么办?

  • 会停止解析HTML,而去加载和执行JavaScript代码;

 

 

 

 那么,JavaScript代码由谁来执行呢?

  • JavaScript引擎

 

 

5.认识JavaScript引擎

为什么需要JavaScript引擎呢?

高级的编程语言都是需要转成最终的机器指令来执行的;

事实上我们编写的Javascript无论你交给浏览器或者Node执行,最后都是需要被CPU执行的;

但是CPU只认识自己的指令集,实际上是机器语言,才能被CPU所执行;

所以我们需要JavaScript引擎帮助我们将JavaScript代码翻译成CPU指令来执行;

 

 

5.1比较常见的JavaScript引擎有哪些?

SpiderMonKey:第一款Javascript引擎,由Brendan Eich开发(也就是JavaScript作者);

Chakra:微软开发,用于IT浏览器

JavaScriptCore:WebKit中的JavaScript引擎,Apple开发;

V8:Google开发的强大JavaScript引擎,也帮助Chrome从众多浏览器脱颖而出;

。。。

 

5.2浏览器内核和JS引擎的关系

我们先以WebKit为例,WebKit事实上由两部分组成的:

WebCore:负责HTML解析、布局、渲染等等相关工作;

JavaScriptCore:解析、执行JavaScript代码;

 

 

 

 

6.另一个强大的JavaScript引擎就是V8引擎

官方对V8引擎的定义:

  • V8是用C++编写的Google开源高性能JavaScript和WebAssembly引擎,它用于Chrome和Node.js等。
  • 它实现ECMAScript和WebAssembly,并在window7或者更高版本,macOS10.12+和使用*64,IA-32,arm或者MIPS处理器的linux系统上运行。
  • V8可以独立运行,也可以嵌入到任何C++应用程序中。

 

 

 

 

6.1 V8引擎架构

 

 

 

 

JavaScript源码是如何被解析(Parse过程)的呢?

 

标签:浏览器,编程语言,JavaScript,js,引擎,V8,原理,执行
来源: https://www.cnblogs.com/hechunfeng/p/15627248.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有