HTML5 的 localStorage 和 sessionStorage 没有 keys() 方法,只能通过 key(index) 配合 length 循环遍历键名;key(index) 按插入顺序返回第 index 个键名,索引范围为 0 到 length−1。

HTML5 的 localStorage 和 sessionStorage 并没有提供原生的 key() 方法来“遍历所有键名”——你可能混淆了 Web Storage API 与 IndexedDB 或其他键值存储(如 Chrome 扩展的 chrome.storage)的接口。标准 Web Storage(localStorage/sessionStorage)只支持 key(index) 这一**按索引获取单个键名**的方法,而非返回全部键名数组的“key() 方法”。
如何用 key(index) 遍历所有键名
虽然没有直接的 keys() 方法,但可借助 length 属性和 key(index) 配合循环,逐个提取所有键名:
-
storage.length返回当前存储中的键值对总数 -
storage.key(i)(i为 0 到length - 1的整数)返回第i个键名(插入顺序,非字母序) - 注意:该顺序由浏览器实现定义,通常为插入顺序,但不保证跨浏览器完全一致
示例代码:
const keys = [];
for (let i = 0; i < localStorage.length; i++) {
keys.push(localStorage.key(i));
}
console.log(keys); // ['username', 'theme', 'token', ...]
更简洁的现代写法:Array.from + key()
利用 Array.from 可将类数组结构(如长度为 n 的索引序列)映射为键名数组:
立即学习“前端免费学习笔记(深入)”;
const allKeys = Array.from(
{ length: localStorage.length },
(_, i) => localStorage.key(i)
);
注意:不存在“Key方法”这一标准API
Web Storage 规范中只有以下相关方法:
setItem(key, value)getItem(key)removeItem(key)clear()-
key(index)—— 唯一与“键名”相关的读取方法,且仅接受数字索引
所谓“Key方法遍历所有键名”不是标准术语,也不代表某个独立方法;它只是对 key(index) 配合 length 的惯用组合操作。
替代方案:使用 Object.keys()(需谨慎)
有人尝试用 Object.keys(localStorage),但这不可靠:
-
localStorage是宿主对象,非普通 JS 对象,其属性不自动暴露为可枚举属性 - Chrome 等浏览器中可能返回空数组或意外结果,Firefox 中通常无效
- 不符合规范,属于未定义行为,禁止在生产环境使用



















