6、渲染流程(下):HTML、CSS和JavaScript,是如何变成页面的在[上篇文章]中,我们介绍了渲染流水线中的DOM生成、样式计算和布局三个阶段,那今天我们接着讲解渲染流水线后面的阶段。 这里还是先简单回顾下上节前三个阶段的主要内容:在HTML页面内容被提交给渲染引擎之后,渲染引擎首先将HTML解析为浏览器可以理解的...2026-02-28浏览器工作原理与实践
7、变量提升:JavaScript代码是按顺序执行的吗讲解完宏观视角下的浏览器后,从这篇文章开始,我们就进入下一个新的模块了,这里我会对JavaScript执行原理做深入介绍。 今天在该模块的第一篇文章,我们主要讲解执行上下文相关的内容。那为什么先讲执行上下文呢?它这么重要吗?可以这么说,只有理解了Ja...2026-02-28浏览器工作原理与实践
8、调用栈:为什么JavaScript代码会出现栈溢出在[上篇文章]中,我们讲到了,当一段代码被执行时,JavaScript引擎先会对其进行编译,并创建执行上下文。但是并没有明确说明到底什么样的代码才算符合规范。 那么接下来我们就来明确下,哪些情况下代码才算是“一段”代码,才会在执行之前就进行编译并创建...2026-02-28浏览器工作原理与实践
9、块级作用域:var缺陷以及为什么要引入let和const在前面[《07 | 变量提升:JavaScript代码是按顺序执行的吗?》]这篇文章中,我们已经讲解了JavaScript中变量提升的相关内容,正是由于JavaScript存在变量提升这种特性,从而导致了很多与直觉不符的代码,这也是JavaScrip...2026-02-28浏览器工作原理与实践
10、作用域链和闭包 :代码中出现相同的变量,JavaScript引擎是如何选择的在[上一篇文章]中我们讲到了什么是作用域,以及ES6是如何通过变量环境和词法环境来同时支持变量提升和块级作用域,在最后我们也提到了如何通过词法环境和变量环境来查找变量,这其中就涉及到作用域链的概念。 理解作用域链是理解闭包的基础,而闭包在JavaSc...2026-02-28浏览器工作原理与实践
11、this:从JavaScript执行上下文的视角讲清楚this在[上篇文章]中,我们讲了词法作用域、作用域链以及闭包,并在最后思考题中留了下面这样一段代码: 1234567891011121314var bar = { myName:"time.geekbang.com", ...2026-02-28浏览器工作原理与实践