赶上五一假期,本周内容比较少,主要就是讲微任务和宏任务,正好最近在学习《视觉笔记入门课》,本节课的信息量还具备精简提炼的可能,所以尝试这换一种方式记录一下,让自己开心一下~

五一前内容

Sktch0021.jpg

第五周内容补充

关于生成微任务的方法增补修正

从目前的情况来看,微任务已经被广泛地应用,基于微任务的技术有 MutationObserverPromise 以及以 Promise 为基础开发出来的很多其他的技术。所以微任务的重要性也与日俱增,了解其底层的工作原理对于你读懂别人的代码,以及写出更高效、更具现代的代码有着决定性的作用。 ——浏览器工作原理与实践

JS引擎执行上下文

在 ES2018 中,执行上下文如下:

  • lexical environment:词法环境,当获取变量或者 this 值时使用。
  • variable environment:变量环境,当声明变量时使用。
  • code evaluation state:用于恢复代码执行位置。
  • Function:执行的任务是函数时使用,表示正在被执行的函数。
  • ScriptOrModule:执行的任务是脚本或者模块时使用,表示正在被执行的代码。
  • Realm:使用的基础库和内置对象实例。
  • Generator:仅生成器上下文有这个属性,表示当前生成器。

image.png

调用栈

每调用一个函数,都会将当前的执行上下文环境入栈,不同上下文环境中,相同变量名的变量有了自己的作用域。详细可以看第三周总结

Realm

Realm 中包含一组完整的内置对象,而且是复制关系。
对不同 Realm 中的对象操作,会有一些需要格外注意的问题,比如 instanceOf 几乎是失效的。

JS引擎入门部分学完之后唯一的感受就是,只要这项技术足够🔥,所有的问题、BUG、设计失误都可以叫做特性……