JS 引擎工作原理

# JS 引擎工作原理

  • 分词/词法分析

    • 将字符组成的字符串分解成(对编程语言来说) 有意义的代码块,这些代码块被称为词法单元(token)
  • 解析/语法分析

    • 将此法单元流(数组)转换成一个由元素逐级嵌套所组成的代表了程序语法结构的树,被称为抽象语法树(Abstract Syntax Tree, AST):
  • 代码生成

    • 将 AST 转换为可执行代码的过程被称为代码生成.

# LHS 和 RHS 的含义:

  • LHS:
    • 赋值操作的左侧
  • RHS:
    • 赋值操作的右侧
  • 注: 并不一定意味着 = 赋值操作符的左右侧. 赋值操作还有其他几种形式. 例如: += -= *=

# 匿名函数和闭包函数的差别

  • 匿名函数
    • 匿名函数在栈追踪中不会显示出有意义的函数名,使得调试很困难
    • 如果没有函数名,单函数需要引用自身时,只能使用已经过期的 arguments.callee 引用
    • 匿名函数省略了对于代码可读性/可理解性很重要的函数名.
  • 闭包函数
    • 你不知道的 javascript 中的定义:
      • 当函数可以记住并访问所在的词法作用域时,就产生了闭包,即使函数是在当前词法作用域之外执行

# 立即执行函数(IIFE)

  • (function(){})()
    • 第一个()将函数解析成表达式
    • 第二个()执行了这个函数

# OSI七层模型

  • ISO为了更好的使网络应用更为普及,推出了OSI参考模型。

(1)应用层 OSI参考模型中最靠近用户的一层,是为计算机用户提供应用接口,也为用户直接提供各种网络服务。我们常见应用层的网络服务协议有:HTTP,HTTPS,FTP,POP3、SMTP等。

  • 在客户端与服务器中经常会有数据的请求,这个时候就是会用到http(hyper text transfer protocol)(超文本传输协议)或者https.在后端设计数据接口时,我们常常使用到这个协议。
  • FTP是文件传输协议,在开发过程中,个人并没有涉及到,但是我想,在一些资源网站,比如百度网盘``迅雷应该是基于此协议的。
  • SMTP是simple mail transfer protocol(简单邮件传输协议)。在一个项目中,在用户邮箱验证码登录的功能时,使用到了这个协议。

(2)表示层

表示层提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。如果必要,该层可提供一种标准表示形式,用于将计算机内部的多种数据格式转换成通信中采用的标准表示形式。数据压缩和加密也是表示层可提供的转换功能之一。

在项目开发中,为了方便数据传输,可以使用base64对数据进行编解码。如果按功能来划分,base64应该是工作在表示层。

(3)会话层

会话层就是负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成。

(4)传输层

传输层建立了主机端到端的链接,传输层的作用是为上层协议提供端到端的可靠和透明的数据传输服务,包括处理差错控制和流量控制等问题。该层向高层屏蔽了下层数据通信的细节,使高层用户看到的只是在两个传输实体间的一条主机到主机的、可由用户控制和设定的、可靠的数据通路。我们通常说的,TCP UDP就是在这一层。端口号既是这里的“端”。

(5)网络层

本层通过IP寻址来建立两个节点之间的连接,为源端的运输层送来的分组,选择合适的路由和交换节点,正确无误地按照地址传送给目的端的运输层。就是通常说的IP层。这一层就是我们经常说的IP协议层。IP协议是Internet的基础。我们可以这样理解,网络层规定了数据包的传输路线,而传输层则规定了数据包的传输方式。

(6)数据链路层

将比特组合成字节,再将字节组合成帧,使用链路层地址 (以太网使用MAC地址)来访问介质,并进行差错检测。 网络层与数据链路层的对比,通过上面的描述,我们或许可以这样理解,网络层是规划了数据包的传输路线,而数据链路层就是传输路线。不过,在数据链路层上还增加了差错控制的功能。

(7)物理层

实际最终信号的传输是通过物理层实现的。通过物理介质传输比特流。规定了电平、速度和电缆针脚。常用设备有(各种物理设备)集线器、中继器、调制解调器、网线、双绞线、同轴电缆。这些都是物理层的传输介质。

# OSI七层模型通信特点:

  • 对等通信 对等通信,为了使数据分组从源传送到目的地,源端OSI模型的每一层都必须与目的端的对等层进行通信,这种通信方式称为对等层通信。在每一层通信过程中,使用本层自己协议进行通信。
最后更新时间: 2022/9/28 04:34:37