js中alert提示堆栈溢出

JavaScript019

js中alert提示堆栈溢出,第1张

出现js堆栈溢出的问题一般的情况有两种:

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引擎首次读取读取脚本时,便会创建一个全局执行上下文,并将其压入栈底,

我们假设一开始的上下文执行栈为 []