📄️ 08 运行时环境:运行JavaScript代码的基石
在执行 JavaScript 代码之前,V8 就已经准备好了代码的运行时环境,这个环境包括了堆空间和栈空间、全局执行上下文、全局作用域、内置的内建函数、宿主环境提供的扩展函数和对象,还有消息循环系统。准备好运行时环境之后,V8 才可以执行 JavaScript 代码,这包括解析源码、生成字节码、解释执行或者编译执行这一系列操作。
📄️ 09 机器代码:二进制机器码如何被CPU执行
V8 首先需要将 JavaScript 编译成字节码或者二进制代码,然后再执行。二进制代码被 CPU 执行时,在编译流水线中的位置:
📄️ 10 堆和栈:函数调用是如何影响到内存布局的
在同一个任务中重复调用嵌套的 foo 函数,V8 报告栈溢出的错:
📄️ 11 延迟解析:V8是如何实现闭包的
V8 执行 JavaScript 代码总流程
📄️ 12 字节码:解释器 如何解释执行字节码
解释器可以直接解释执行字节码,也可以将字节码编译为二进制代码,然后再执行二进制机器代码。
📄️ 13 隐藏类:如何在内存中快速查找对象属性
为什么静态语言的效率更高