美文网首页深入JavaScript
深入JavaScript Day01 - 高级语言、浏览器内核、

深入JavaScript Day01 - 高级语言、浏览器内核、

作者: 望穿秋水小作坊 | 来源:发表于2022-01-10 14:37 被阅读0次

    一、认识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 - 高级语言、浏览器内核、

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