深入JavaScript Day01 - 高级语言、浏览器内核、JS引擎、V8引擎

一、认识JavaScript

1、TypeScript最近几年发展火爆,会取代JavaScript吗?

  • 【不会取代】
  • TypeScript只是给JavaScript带了类型思维,让我们编码阶段更加安全
  • TypeScript官网有这么一句话【源于JavaScript,归于JavaScript】
  • 如果有一天JavaScript官方支持类型思维后,TypeScript更有可能退出历史舞台
image.png

2、代码最终都要交给CPU执行吗?CPU只认识什么指令?有什么缺点?

  • 对的,代码最终都要交给CPU进行执行。
  • CPU执行【二进制指令】,比如【10101010】
  • 【缺点】但是存在问题【10101010】,是代表【读】还是【写】还是【其他功能】?很不利于人类记忆

3、汇编语言和二进制指令有什么关系?有什么缺点?

  • 汇编语言实际上就是二进制指令的【助记符】,它只是二进制指令的映射。
LD:10101010 
id:10101111
R:11111010
  • 这样上述指令就可以表达为 LD id R,大大增强了代码的可读性。

-【缺点】CPU只能执行三地址表达式,和人类的思维方式相差甚远。

4、高级语言的优缺点?

  • 【优点】更加符合人类的思维方式和阅读习惯
  • 【缺点】计算机并不能直接执行高级语言,需要把高级语言转化成【汇编语言/机器指令】才能执行,这个过程也叫做编译

5、JavaScript是高级语言吗?JavaScript需要转化成汇编指令吗?

  • JavaScript是高级语言
  • 基本上所有的高级语言,都会转成机器指令。而机器指令和汇编指令是一一对应的,所以这个问题意义不大。


    image.png

二、JavaScript 和 浏览器

1、从输入域名开始,描述下JavaScript代码是如何被浏览器拿到的?

  • ①域名通过DNS服务器解析,获得真实的IP地址
  • ②浏览器访问IP,拿到静态HTML文件
  • ③浏览器解析HTML,下载其中的CSS和JavaScript代码
  • ④借助JavaScript引擎,解析执行JavaScript代码

2、什么是浏览器内核?最常见的两个内核是哪两个?

  • 浏览器内核简单来说,就是处理HTML+CSS+JavaScript代码,最终生成网页的中间人。
  • 最常见的两个内核:【Webkit】、【Blink】
image.png

4、浏览器拿到HTML后,在解析HTML的过程中,如果遇到img资源会怎么处理?如果遇到css资源呢?如果遇到script资源呢?

  • 【img资源】属于非阻塞资源,浏览器会请求这些资源并且继续解析。
  • 【css资源】也属于非阻塞资源,解析也可以继续进行。
  • 【普通script资源】会阻塞渲染并停止HTML的解析,尽管浏览器的预加载扫描器加速了这个过程,但过多的脚本仍然是一个重要的瓶颈。

参考文章: https://developer.mozilla.org/zh-CN/docs/Web/Performance/How_browsers_work#%E6%9E%84%E5%BB%BAdom%E6%A0%91

5、描述浏览器拿到HTML之后,渲染过程(从HTML、CSS、JavaScript最终渲染到屏幕的过程)?

image.png

三、掌握 JavaScript引擎相关概念

1、为什么需要JavaScript引擎?常见的JavaScript引擎有哪些?

  • 【为什么】因为JavaScript是高级编程语言,CPU并不认识,需要由JavaScript引擎进行翻译。
  • 【常见引擎】JavaScriptCore、V8
image.png

2、浏览器内核和JS引擎之间是什么关系?

  • 这里我们先以Webkit内核为例,Webkit主要由两部分组成的:
  • 【WebCore】:负责HTML解析、布局、渲染等等相关的工作;
  • 【JavaScriptCore】:解析、执行JavaScript代码;
image.png

3、V8引擎本身是用什么语言编写的?V8引擎的原理(至少能说出源码、语法书、字节码、机器指令几个环节)?

  • V8是用C++编写的Google开源高性能JavaScript引擎。
image.png

4、V8的一些其他细节(用到再了解)

image.png
image.png
image.png

你可能感兴趣的:(深入JavaScript Day01 - 高级语言、浏览器内核、JS引擎、V8引擎)