localStorage
和 sessionStorage
都是 Web 存储 API 的一部分,它们允许在用户的浏览器中存储数据,但它们在数据的生命周期和存储限制上存在一些关键的区别。
1. 生命周期
- localStorage:存储的数据没有时间限制,除非主动删除,否则数据会永久保存在浏览器中。即使关闭浏览器窗口或重新启动浏览器,数据依然存在。
- sessionStorage:存储的数据在页面会话(session)期间有效,即只要浏览器窗口(或标签页)是打开的,数据就存在。一旦关闭窗口或标签页,存储的数据就会被删除。重新打开相同的窗口或标签页不会恢复数据。
2. 存储限制
- localStorage 和 sessionStorage 的存储限制通常相似,但具体值依赖于浏览器。大多数现代浏览器允许至少 5MB 的存储空间,但具体值可能会根据浏览器和用户的设置有所不同。
3. 存储的数据类型
- 两者都只能存储字符串类型的数据。如果你需要存储其他类型的数据(如对象或数组),你需要先将它们转换为字符串(通常使用
JSON.stringify()
),然后在需要时再将字符串转换回原始数据类型(使用JSON.parse()
)。
4. 访问方式
- localStorage 和 sessionStorage 都通过全局的
window
对象访问,因此可以直接使用localStorage
和sessionStorage
。 - 它们都提供了相似的 API 方法,如
setItem(key, value)
、getItem(key)
、removeItem(key)
、clear()
和key(index)
。
5. 用途
- localStorage 适合存储那些需要长期保存的数据,如用户偏好设置、游戏得分记录等。
- sessionStorage 适合存储那些只需要在当前会话中保持的数据,如页面之间的临时数据传递。