2026-10-29 17:22:56
localStorage是浏览器提供的持久化存储机制,用于在客户端存储键值对数据,即使关闭浏览器后数据也不会丢失。它适合存储少量非敏感的用户数据,如用户偏好设置、主题选择或离线数据缓存。
如何存储数据?localStorage通过以下方法操作数据,且只能存储字符串类型。若需存储对象或数组,需先使用JSON.stringify()转换为字符串,获取时再用JSON.parse()解析。
存储数据:使用setItem(key, value)方法。
// 存储字符串localStorage.setItem('username', 'Alice');console.log(localStorage.getItem('username')); // 输出: Alice// 存储对象(需序列化)const userSettings = { theme: 'dark', fontSize: 'medium' };localStorage.setItem('settings', JSON.stringify(userSettings));
获取数据:使用getItem(key)方法。
// 获取并解析对象const storedSettings = JSON.parse(localStorage.getItem('settings'));console.log(storedSettings.theme); // 输出: dark移除数据:使用removeItem(key)方法删除指定键值对。
localStorage.removeItem('username');console.log(localStorage.getItem('username')); // 输出: null清空所有数据:使用clear()方法(慎用,会删除当前域下所有数据)。
// localStorage.clear(); // 清除所有存储生命周期:
localStorage:数据持久化,除非手动清除或调用removeItem/clear,否则一直存在。适合存储长期保留的用户偏好(如主题模式、语言设置)。
sessionStorage:数据仅在当前浏览器会话有效,关闭标签页或窗口后自动清空。适合存储临时数据(如多步表单的中间状态)。

使用场景:
localStorage:用户偏好设置、离线缓存。
sessionStorage:会话期间的临时数据(如表单填写进度)。
数据明文存储,易被JavaScript访问,存在XSS漏洞时可能被恶意脚本读取或修改。
禁止存储敏感信息(如密码、信用卡号、Session ID),应使用安全Cookie或服务器端Session。
通过检测window.localStorage是否存在,并尝试写入和删除数据以确保可用性:
function isLocalStorageAvailable() { let test = 'test'; try { localStorage.setItem(test, test); localStorage.removeItem(test); return true; } catch (e) { return false; // 隐私模式或存储空间不足 }}if (isLocalStorageAvailable()) { console.log("localStorage可用!");} else { console.log("localStorage不可用,可能处于隐私模式或空间不足。"); // 提供备用方案(如Cookie)或提示用户}