🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
关于栈这个数据结构,因为是最简单 也是接触最多的。比如一些导航都会使用到。 # 什么是栈 栈的其实就是一个****后进先出****的数据结构,先进来的压倒最下面,后进来的放到最上面(形象点可以理解为蜂窝煤,后进来放上面,先被拿出) ![](https://img.kancloud.cn/b8/7c/b87c6c8239f21a63a463b80efb21359f_440x526.png) # 前端中的栈 在JS中没有栈这个数据结构,但是,我们可以用数组来模拟实现栈的所有功能。 ![](https://img.kancloud.cn/58/d2/58d2daa236419cec860eaaa91aee7f46_324x192.png) # **应用场景** 需要后进先出的场景。 场景一:小程序的页面栈 > 小程序的页面进行堆栈,以栈的形式维护了当前的所有页面。使用`wx.navigateTo()`跳转页面的时候保留了当前页面,即页面入栈,使用`wx.navigateBack()`可回退页面,即页面出栈。小程序中页面栈最多**十层**。 场景二:函数调用堆栈 在JS函数中,最先调用的函数,最后执行完,最后调用的函数,最先执行完。 JS解释器使用栈来控制函数的调用顺序。比如,在下面的函数中,最先调用的hello最后执行完,最后调用的sayHi,最先结束。 ``` function hello(){ sayHi() } function sayHi(){ return 'Hi' } hello() ``` 其他场景... # leetcode栈相关的题 [有效的括号](https://leetcode-cn.com/problems/valid-parentheses/) ![](https://img.kancloud.cn/8f/5d/8f5d48f22676c2862f4fc6b11f8ca309_1027x748.png) 题解: ![](https://img.kancloud.cn/a4/65/a465b051450d957b654bb0b7a1ad6c90_819x430.png)