12、延迟解析:V8是如何实现闭包的你好,我是李兵。 在第一节我们介绍过V8执行JavaScript代码,需要经过编译和执行两个阶段,其中编译过程是指V8将JavaScript代码转换为字节码或者二进制机器代码的阶段,而执行阶段则是指解释器解释执行字节码,或者是CPU直接执行二进制机器...2026-02-27图解 Google V8
13、字节码(一):V8为什么又重新引入字节码你好,我是李兵。 在第一节课我们就介绍了V8的编译流水线,我们知道V8在执行一段JavaScript代码之前,需要将其编译为字节码,然后再解释执行字节码或者将字节码编译为二进制代码然后再执行。 所谓字节码,是指编译过程中的中间代码,你可以把字节码看成...2026-02-27图解 Google V8
14、字节码(二):解释器是如何解释执行字节码的你好,我是李兵。 在上节我们介绍了V8为什么要引入字节码,这节课我们来聊聊解释器是如何解释执行字节码的。学习字节码如何被执行,可以让我们理解解释器的工作机制,同时还能帮助我们搞懂JavaScript运行时的内存结构,特别是闭包的结构和非闭包数据的区别...2026-02-27图解 Google V8
15、隐藏类:如何在内存中快速查找对象属性你好,我是李兵。 我们知道JavaScript是一门动态语言,其执行效率要低于静态语言,V8为了提升JavaScript的执行速度,借鉴了很多静态语言的特性,比如实现了JIT机制,为了提升对象的属性访问速度而引入了隐藏类,为了加速运算而引入了内联缓存...2026-02-27图解 Google V8
16、答疑: V8是怎么通过内联缓存来提升函数执行效率的你好,我是李兵。 上节我们留了个思考题,提到了一段代码是这样的: 123456789function loadX(o) { return o.x}var o = { x: 1,y:3}var o1 = ...2026-02-27图解 Google V8
17、消息队列:V8是怎么实现回调函数的你好,我是李兵。 我们在使用JavaScript时,经常要用到大量的回调函数,比如在浏览器中可以使用setTimeout来设置定时器,使用XMLHTTPRequest来异步下载资源文件,在Node中可以使用readFile来读取文件,这些操作都有一个...2026-02-27图解 Google V8