赶上五一假期,本周内容比较少,主要就是讲微任务和宏任务,正好最近在学习《视觉笔记入门课》,本节课的信息量还具备精简提炼的可能,所以尝试这换一种方式记录一下,让自己开心一下~
五一前内容
第五周内容补充
关于生成微任务的方法增补修正
从目前的情况来看,微任务已经被广泛地应用,基于微任务的技术有 MutationObserver、Promise 以及以 Promise 为基础开发出来的很多其他的技术。所以微任务的重要性也与日俱增,了解其底层的工作原理对于你读懂别人的代码,以及写出更高效、更具现代的代码有着决定性的作用。 ——浏览器工作原理与实践
JS引擎执行上下文
在 ES2018 中,执行上下文如下:
- lexical environment:词法环境,当获取变量或者 this 值时使用。
- variable environment:变量环境,当声明变量时使用。
- code evaluation state:用于恢复代码执行位置。
- Function:执行的任务是函数时使用,表示正在被执行的函数。
- ScriptOrModule:执行的任务是脚本或者模块时使用,表示正在被执行的代码。
- Realm:使用的基础库和内置对象实例。
- Generator:仅生成器上下文有这个属性,表示当前生成器。
调用栈
每调用一个函数,都会将当前的执行上下文环境入栈,不同上下文环境中,相同变量名的变量有了自己的作用域。详细可以看第三周总结
Realm
Realm 中包含一组完整的内置对象,而且是复制关系。
对不同 Realm 中的对象操作,会有一些需要格外注意的问题,比如 instanceOf 几乎是失效的。
JS引擎入门部分学完之后唯一的感受就是,只要这项技术足够🔥,所有的问题、BUG、设计失误都可以叫做特性……