![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
javascript
文章平均质量分 85
凉寻
小白程序员
展开
-
V8异步编程
我们先来看什么是回调地狱。假设你们老板给了你一个小需求,要求你从网络获取某个用户的用户名,获取用户名称的步骤是先通过一个 id_url 来获取用户 ID,然后再使用获取到的用户 ID 作为另外一个 name_url 的参数,以获取用户名。那么你会怎么实现这个小小的需求呢?其中最容易想到的方案是使用 XMLHttpRequest,并按照前后顺序异步请求这两个 URL。原创 2023-02-28 15:20:00 · 187 阅读 · 0 评论 -
消息队列:V8是怎么实现回调函数的?
那究竟什么是回调函数呢?其实回调函数也是个函数,就像白马也是🐴一样,它具有函数的所有特征,它可以有参数和返回值。如果单独给出一个函数,你是看不出来它是不是回调函数的。回调函数区别于普通函数,在于它的调用方式。只有当某个函数被作为参数,传递给另外一个函数,或者传递给宿主环境,然后该函数在函数内部或者再宿主环境中被调用,我们才称为回调函数具体的讲,回调函数有两种不同的形式,同步回调和异步回调。原创 2023-02-28 14:05:43 · 221 阅读 · 0 评论 -
关于V8延迟解析和闭包实现
今天我们主要介绍了 V8 的惰性解析,所谓惰性解析是指解析器在解析的过程中,如果遇到函数声明,那么会跳过函数内部的代码,并不会为其生成 AST 和字节码,而仅仅生成顶层代码的 AST 和字节码。利用惰性解析可以加速 JavaScript 代码的启动速度,如果要将所有的代码一次性解析编译完成,那么会大大增加用户的等待时间。原创 2023-02-28 14:02:14 · 254 阅读 · 0 评论 -
JavaScript中的Completion Record
JavaScript 用语句来完成流程控制if (x === 1) return 10;这是一条简单的 if 语句,它的完成状态可能是不一样的,return 有可能会执行也有可能不会执行取决于 x 变量具体的值,所以 JavaScript 引擎在解析if语句的时候就需要知道它完成之后的结果到底是怎样的。于是在 JavaScript 语言中就需要一种数据结构来存储语句的完成结果,这就是我们所谓的 Completion Record 类型了,它不在其中基本类型中,我们在 JavaScript 中无论如何原创 2021-12-16 09:39:12 · 249 阅读 · 0 评论