摘要:
目录 序言 var 与 let 的区别 作用域 重复声明 绑定全局对象 变量提升与暂存死区 let 与 const 异同 参考 1.序言 var、let 和 const 都是 JavaScript 中用来声明变量的关键字,并且 let 和 const 关键字是在 ES6 中才新增的。既然都是用来声明 阅读全文
摘要:
目录 序言 Function.prototype.bind() 方法 箭头函数 参考 1.序言 在 深入理解JS:执行上下文中的this(一) 中,我们主要深入分析全局环境和函数环境中函数调用的 this,还留下 bind 方法以及箭头函数的 this 尚未分析,因此我们将在这篇文章进行讲解。 2. 阅读全文
摘要:
目录 执行上下文与执行上下文栈 this 全局环境 函数环境 总结 参考 1.执行上下文与执行上下文栈 (1)什么是执行上下文? 在 JavaScript 代码运行时,解释执行全局代码、调用函数或使用 eval 函数执行一个字符串表达式都会创建并进入一个新的执行环境,而这个执行环境被称之为执行上下文 阅读全文
摘要:
目录 序言 class 是一个特殊的函数 class 的工作原理 class 继承的原型链关系 参考 1.序言 ECMAScript 2015(ES6) 中引入的 JavaScript 类实质上是 JavaScript 现有的基于原型的继承的语法糖。类语法(class)不会为JavaScript引入 阅读全文
摘要:
目录 序言 不同返回值的构造函数 深入 new 调用函数原理 总结 参考 1.序言 在 "深入理解JS中的对象(一):原型、原型链和构造函数" 中,我们分析了JS中是否一切皆对象以及对象的原型、原型链和构造函数。在谈到构造函数时,应该有注意到箭头函数是不能作为构造函数的,也就是不能使用 new 关键 阅读全文
摘要:
目录 一切皆是对象吗? 对象 原型与原型链 构造函数 参考 1.一切皆是对象吗? 首先,“在 JavaScript 中,一切皆是对象”这种表述是不完全正确的。 JavaScript 的数据类型分为两类:原始值类型和对象(Object类型)。 原始值类型(ES5): undefined null ty 阅读全文
摘要:
目录 一个存在内存泄露的闭包实例 什么是内存泄露 JS的垃圾回收机制 什么是闭包 什么原因导致了内存泄露 参考 1.一个存在内存泄露的闭包实例 上面代码片段做了一件事情:每隔1秒后调用 replaceThing 函数,全局变量 theThing 得到一个包含一个大数组和一个新闭包(someMetho 阅读全文
摘要:
目录 事件循环机制 宏任务与微任务 实例分析 参考 1.事件循环机制 浏览器执行JS代码大致可以分为三个步骤,而这三个步骤的往复构成了JS的事件循环机制(如图)。 第一步: 主线程(JS引擎线程)中执行JS整体代码或回调函数(也就是宏任务),执行过程中会将对象存储到堆(heap)中,将函数的参数和局 阅读全文
摘要:
目录 微任务 事件循环机制 setImmediate、setTimeout/setInterval 和 process.nextTick 执行时机对比 实例分析 后记 参考 1.微任务 在谈论Node的事件循环机制之前,先补充说明一下 Node 中的“微任务”。这里说的微任务(microtasks) 阅读全文
摘要:
目录 为什么分析asap asap概述 asap源码解析—Node版 参考 1.为什么分析asap 在之前的文章 "async和await是如何实现异步编程?" 中的 “浅谈Promise如何实现异步执行” 小节,提到了 Promise 异步执行是通过 "asap" 这个库来实现的。所以为了进一步深 阅读全文