摘要:前言:该篇说明:请见 说明 —— 浏览器工作原理与实践 目录 前面我们讲到了每个渲染进程都有一个主线程,并且主线程非常繁忙,既要处理 DOM,又要计算样式,还要处理布局,同时还需要处理 JavaScript 任务以及各种输入事件。要让这么多不同类型的任务在主线程中有条不紊地执行,这就需要一个系统来统
阅读全文
摘要:前言:该篇说明:请见 说明 —— 浏览器工作原理与实践 目录 前面我们已经花了很多篇幅来介绍 JavaScript 是如何工作的,了解了这些内容能帮助你从底层理解 JavaScript 的工作机制,从而能帮助你更好地理解和应用 JavaScript。 今天这篇文章我们就继续 “向下” 分析,站在 J
阅读全文
摘要:前言:该篇说明:|请见 说明 —— 浏览器工作原理与实践 目录 在上一篇文章中,我们提到了 JavaScript 中的数据是如何存储的,并通过例子分析了原始数据类型是存储在栈空间中的,引用类型的数据是存储在堆空间中的。通过这种分配方式,我们解决了数据的内存分配的问题。 不过有些数据被使用之后,可能就
阅读全文
摘要:前言:该篇说明:请见 说明 —— 浏览器工作原理与实践 目录 对于前端开发者来说,JavaScript 的内存机制是一个不被经常提及的概念 ,因此很容易被忽视。特别是一些非计算机专业的同学,对内存机制可能没有非常清晰的认识,甚至有些同学根本就不知道 JavaScript 的内存机制是什么。 但是如果
阅读全文
摘要:前言:该篇说明:|请见 说明 —— 浏览器工作原理与实践 目录 在上篇文章中,我们讲了词法作用域、作用域链以及闭包,并在最后思考题中留了下面这样一段代码: 相信你已经知道了,在 printName 函数里面使用的变量 myName 是属于全局作用域下面的,所以最终打印出来的值都是 “极客邦”。这是因
阅读全文
摘要:前言:该篇说明:|请见 说明 —— 浏览器工作原理与实践 目录 在上一篇文章中我们讲到了什么是作用域,以及 ES6 是如何通过变量环境和词法环境来同时支持变量提升和块级作用域,在最后我们也提到了如何通过词法环境和变量环境来查找变量,这其中就涉及到作用域链的概念。 理解作用域链是理解闭包的基础,而闭包
阅读全文
摘要:前言:该篇说明:|请见 说明 —— 浏览器工作原理与实践 目录 在前面《07 | 变量提升:JavaScript 代码是按照顺序执行的吗?》这篇文章中,我们已经讲解了 JavaScript 中变量提升的相关内容,正是由于 JavaScript 存在变量提升这种特性,从而导致了很多于直觉不符的代码,这
阅读全文
摘要:前言:该篇说明:请见 说明 —— 浏览器工作原理与实践 目录 在上篇文章中,我们讲到了,当一段代码被执行时,JavaScript 引擎先会对其进行编译,并创建执行上下文。但是并没有明确说明到底什么样的代码才算符合规范。 那么接下来我们就来明确下,哪些情况下代码才算是“一段”代码,才会在执行之前就进行
阅读全文
摘要:前言:该篇说明:请见 说明 —— 浏览器工作原理与实践 目录 讲解完宏观视角下的浏览器后,从这篇文章开始,我们就进入下一个新的模块了,这里我会对 JavaScript 执行原理做深入介绍。 今天在该模块的第一篇文章,我们主要讲解执行上下文相关的内容。那为什么先讲执行上下文呢?它这么重要吗?可以这么说
阅读全文