1、检查自己的js代码看代码中有没有死循环。
2、代码中引用了jQuery-1.4.2.min.js这个js实现一些动态效果或者是辅助,这个版本的jQuery就存在这样的问题(同事就是遇到了这个问题)。
3、解决方案:
4、查询自己的代码,用ie8、ie9自带的js调试工具跟一遍代码看哪里出现了问题。
5、更换jQuery引用版本。
node 事件循环见: https://www.jianshu.com/p/69d2b70d3163 。
参考: https://jakearchibald.com/2015/tasks-microtasks-queues-and-schedules/?utm_source=html5weekly
we don't add another mutation microtask as one is already pending
三个概念: JS堆栈、宏任务、微任务。
js 是一个单线程语言。
在执行一个js文件的过程中, js堆栈 中一直有任务,执行过程中,如果碰到了 宏任务 或者 微任务 ,会将其分别放入 宏任务队列 和 微任务队列 中。
当js文件被执行完, js堆栈 为空,此时执行 微任务队列 中的所有任务。当执行 微任务 过程中碰到 宏任务 或者 微任务 ,同样会将其分别放入 宏任务队列 和 微任务队列 中。
当 微任务队列 为空,此时执行 宏任务队列 中的所有任务。在执行过程中
宏任务按顺序执行,且浏览器在每个宏任务之间渲染页面
所有微任务也按顺序执行,且在以下场景会立即执行所有微任务:
例子:
执行结果:(Chrome 89)
执行上下文有 三种 类型:
执行上下文也是一个对象!那么这个对象中包括了哪些内容呢
每一个 执行上下文都包括三个属性:
存储执行上下文的数据结构是堆栈,它是一种先进后出的数据结构, 称其为 执行栈 。
1.当js引擎首次读取读取脚本时,便会创建一个全局执行上下文,并将其压入栈底,
我们假设一开始的上下文执行栈为 []