You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用localStorage存储数据时出现list.push is not a function报错是什么原因?

错误原因
  • 该报错的核心是调用push方法的list变量不是数组类型:push是仅数组原型上存在的方法,非数组类型调用该方法就会抛出对应错误。
  • 触发当前场景的具体原因:本地localStorage中已经存在名为DB的存储键,但该键对应的值经JSON.parse解析后不是数组类型。比如之前调试时曾向DB键存入过普通对象、字符串、数字等非数组值,这类值解析后都是真值,无法触发!list的初始化逻辑,代码直接进入else分支调用不存在的push方法导致报错。
修复方案

调整取值后的校验逻辑,不要仅判断list是否为假值,额外增加数组类型校验,只要解析后的值不是数组,就统一重置为空数组,避免之前存入的非法类型干扰逻辑运行。

修正后代码
// 取值后先做类型兜底,非数组直接重置为空数组
let list = JSON.parse(localStorage.getItem('DB'));
if (!Array.isArray(list)) {
  list = [];
}

// 注意:代码中的number变量需要提前初始化赋值,否则会单独抛出引用错误
const index = number++;

list.push({
  todo: text,
  index: index
});
localStorage.setItem("DB", JSON.stringify(list));
console.log(list);

内容的提问来源于stack exchange,提问作者sojinLee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 09:06:03