1.栈
先进后出
1.调用栈:
是JS引擎追踪函数执行流程的一种机制,当执行环境中调用了多个函数时,通过这种机制,我们能追踪到哪个函数正在执行,执行的函数体又调用了哪个函数
函数的声明是不会进入栈中的,调用栈就是被调用的函数才会入栈
如一个函数:
当执行到第十行,average函数才会被调用,此时average函数入栈,此时average函数中又调用了sum函数,sum函数入栈:
当sum函数执行结束,sum函数就出栈。再接着执行sum函数后面的代码,当average函数执行结束,average函数出栈。
再接着执行到11行,console.log()入栈。执行结束console.log()出栈
此时JS执行环境处于空闲状态
2.堆栈溢出
最常见的一个场景就是递归,当使用递归,却没有一个递归结束的判断的时候。
如:
此时控制台会出现:
2.队列
先进先出