在js中我们必须了解得三种数据结构:栈(stack),堆(heap),队列(queue).
一,栈
(1),栈是一种数据结构,它表达的是数据的一种存取方式,这是理论基础。
(2),栈可以用来规定代码的执行顺序,在js中通常叫做函数调用栈(call stack),它是根据数据结构理论实现的一种实践。
(3),栈表达的是一种数据在内存当中的储存区域,通常叫栈区。但js和其他语言有所区别,它并没有像其他语言那样区分栈区和堆区。因此我们可以理解为所有数据是存放在堆内存空间中的。
图示:
这种存储方式的特点是先进后出,后进先出,在实践中(Array)提供两种方法来应对这种存取方式:
push:像数组末尾添加元素(进栈方法)
pop:弹出数据末尾的一个元素(出栈方法)
二,堆
堆通常为一种树状结构,它的存取方式和在书架中取书十分的类似。书虽然整齐的摆在书架上,但是只要知道书的名字,在书架找到之后就可以直接取出。不用关心书的存放顺序。既不用像栈一样必须取出某些元素之后才能取到自己想要的元素
图示:
三,队列
在js中理解队列数据结构的目的是为了搞清楚事件循环(Event Loop)机制到底是怎么回事。
图示
队列(queue)是一种先进先出(FIFO)的数据结构。正如果安检一样,排在队列前面的人一定是最先通过的人。