聊聊 JavaScript 中栈运用

182 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第 27 天,点击查看活动详情

栈其实就是一个后进先出的数据结构,下图就是栈操作的过程简图。

image.png

举个列子,不知道大家有没有见过蜂窝煤的煤炉呢?在过去的一段时间里,使用得非常的多,在使用这个煤炉时,会往煤炉里面添加一块又一块煤,先进放入的煤在最下面;在把蜂窝煤从煤炉中给拿出来时,后进的蜂窝煤是最早被拿出来的,也就是属于最上面的那个蜂窝煤,它是最早被拿出来的,这就是我们所说的后进先出。把蜂窝煤放到煤炉以及拿出来这两个操作什分别是 Push 和 Pop,中文是入栈和出栈,

如果大家熟悉 JavaScript Array 这个数据结构,应该知道 Array 中是有 Push 和 Pop 这两个方法的。对于我们前端工程师而言,我们最熟悉的 JavaScript 这门语言里面没有栈这个数据结构,它不像 Java 语言,Java 语言中是有栈这个数据结构的。但是我们却可以用 Array 这个数据结构来实现栈所有功能。 概念介绍完了,那么如何在 JavaScript 中运用栈。

const stack =[];
stack.push(1);
stack.push(2);
const item1=stack.pop();
const item2=stack.pop();

可以看到,这个就是通过 Array 数组来实现栈的入栈操作和出栈操作。Array 数据中 pop() 方法是移除数组中的最后一项并返回它。

如何运行这段 JavaScript,有的人说需要放在 HTML 里面,打开浏览器才能执行它,其实是不需要的,这段代码同样可以在 node.js 里运行,而 VS Code 是默认支持 node.js 调试的。所以我们只需要在需要调试的代码前打个断点,并按键盘上的 F5 就可以运行这段代码。

image.png

运行之后,会停在打上断点的位置,不仅如此我们同时还可以在左侧的面板看到一些变量的值。比如我们声明的 item1 和 item2 变量以及一些系统变量。这里我们重点关注 item1、item2 和 stack 即可。除了能看到这些变量之外,我们还能一步一步的执行代码。

介绍到这里,我们顺便就把 VS Code 调试 JavaScript 代码的按钮介绍一遍,方便大家以后的学习和使用这些功能。   image.png   第一个 continue 按钮,点击这个按钮,程序将会运行到下一个断点处,但是如果没有断点,程序将会执行完;第二个按钮是用来一行一行执行代码;第三个按钮是进入函数执行代码;第四个按钮是跳出当前执行的函数;第五个按钮是重启整个脚本文件;最后一个按钮是停止当前调试。

点击第二个按钮两次,我们代码执行了两行,并且在左侧中的 stack 数组从一个空数组变成一个长度为 2 的数组,数组中的值是 1 和 2。

image.png

接着,我们在点击第二个按钮,发现后入的 2 先出,同时 stack 数组中的为 2 这个值被赋值到 item1 的这个变量上。

image.png

这是不是就是典型的后进先出的操作,我们重点关注的就是它的后进先出特性。