JavaScript 基础与页面交互

用 localStorage 保存状态

把数组序列化保存,加载时验证并为损坏数据提供恢复路径。

难度
入门
预计时间
40 分钟
最近验证
2026/9/21

这一节要完成什么

把数组序列化保存,加载时验证并为损坏数据提供恢复路径。

先理解:为什么要学它

把数组序列化保存,加载时验证并为损坏数据提供恢复路径。

跟着做

const STORAGE_KEY = 'coderung:sessions:v1';
function saveSessions(items) {
  localStorage.setItem(STORAGE_KEY, JSON.stringify(items));
}
function loadSessions() {
  try {
    const value = JSON.parse(localStorage.getItem(STORAGE_KEY) ?? '[]');
    return Array.isArray(value) ? value : [];
  } catch {
    return [];
  }
}
  1. 打开上一节保留的项目,先运行当前版本并记录结果。
  2. 输入示例并逐行运行,完成:新增后刷新确认保留;再在 DevTools 写入损坏 JSON,页面应恢复为空状态而不崩溃。
  3. 至少改变一个输入,先预测结果,再用浏览器验证。
  4. 故意制造本节典型错误,再根据错误信息修复:localStorage 只存字符串且不适合秘密;任何读出的数据都当作不可信输入。

关键代码怎么读

  • 把数组序列化保存,加载时验证并为损坏数据提供恢复路径。
  • 代码要按输入、处理、输出三部分阅读;先指出每一部分在哪里。
  • 能运行只是第一步,完成后必须用不同输入验证边界。

常见错误:看到什么,检查什么

现象检查方法
结果与预期不同localStorage 只存字符串且不适合秘密;任何读出的数据都当作不可信输入。
刷新后没有变化确认文件已保存、脚本路径正确,并阅读 Console 第一条相关错误。

自己完成一次

新增后刷新确认保留;再在 DevTools 写入损坏 JSON,页面应恢复为空状态而不崩溃。

完成后再看参考答案

完成后应能不用复制示例重新实现,并解释为什么这样处理。关键检查:localStorage 只存字符串且不适合秘密;任何读出的数据都当作不可信输入。

完成检查

  • 我完成了本节要求的可见结果
  • 我能解释关键代码的输入、处理和输出
  • 我测试了正常、边界和错误情况

隐私选择

必要存储始终启用。只有在你同意后,才会加载可选的访问统计与支持服务。