push()和pop()是JavaScript中实现栈结构的典型方法,push()从数组末尾添加元素并返回新长度,pop()移除并返回末尾元素,二者配合严格遵循LIFO原则,仅操作数组末尾。

JavaScript 中的 push() 和 pop() 是一对典型的栈(Stack)操作方法,遵循“后进先出”(LIFO)原则——就像往箱子里叠放书本,最后放进去的那本,最先被拿走。
push():从数组末尾添加元素
它接收一个或多个参数,把它们依次追加到数组的最后位置,并返回操作后数组的新长度。
- 原数组会被直接修改(属于“变异方法”)
- 返回值是数字类型,不是新数组
- 可一次添加多个元素,顺序保持传入顺序
例如:let arr = [1, 2]; arr.push(3, 4); // arr 变成 [1, 2, 3, 4],返回值是 4
pop():从数组末尾移除并返回元素
它不接受参数,删除数组最后一个元素,并将该元素作为返回值。若数组为空,则返回 undefined。
立即学习“Java免费学习笔记(深入)”;
- 同样会直接修改原数组
- 常用于“取走最近一次存入的数据”场景
- 和 push 配合,就能模拟函数调用栈、撤销操作、括号匹配等逻辑
例如:let arr = [1, 2, 3]; let last = arr.pop(); // last 是 3,arr 变成 [1, 2]
push 与 pop 的典型栈式协作
两者组合使用时,天然构成一个栈结构。关键在于:只操作数组末尾,不碰开头或其他位置。
- 入栈 → push();出栈 → pop()
- 判断是否为空?用
arr.length === 0 - 查看栈顶元素?用
arr[arr.length - 1](不改变数组) - 避免混用 unshift/shift,否则就变成队列(FIFO)了
比如实现简易撤销功能:const history = []; history.push(stateA); history.push(stateB); const lastState = history.pop(); // 撤销到 stateA










