localStorage和sessionStorage的区别是什么?

2025-03-13 13:03:04
推荐回答(2个)
回答1:

区别如下:

1、localStorage和sessionStorage一样都是用来存储客户端临时信息的对象。

2、他们均只能存储字符串类型的对象(虽然规范中可以存储其他原生类型的对象,但是目前为止没有浏览器对其进行实现)。

3、localStorage生命周期是永久,这意味着除非用户显示在浏览器提供的UI上清除localStorage信息,否则这些信息将永远存在。

4、sessionStorage生命周期为当前窗口或标签页,一旦窗口或标签页被永久关闭了,那么所有通过sessionStorage存储的数据也就被清空了。

5、不同浏览器无法共享localStorage或sessionStorage中的信息。相同浏览器的不同页面间可以共享相同的 localStorage(页面属于相同域名和端口),但是不同页面或标签页间无法共享sessionStorage的信息。这里需要注意的是,页面及标 签页仅指顶级窗口,如果一个标签页包含多个iframe标签且他们属于同源页面,那么他们之间是可以共享sessionStorage的。

回答2:

localStorage 是指本地存储的意思。

比 cookies 能存更大的数据,可以在开发者工具中的 Application 栏找到 localStorage。

JS 则通过访问 localStorage 对象来读写本地存储,localStorage 对象本身比较简单,有为数不多的几个 API:

  • key(n) - 返回第 n 个键名,则个函数用得较少

  • getItem(key) - 返回指定 key 的值

  • setItem(key, value) - 设置指定 key 的值

  • removeItem(key) - 移除指定 key 的数据项

  • clear() - 清除所有的数据项

  • 此外还有一个 length 属性,代表当前有多少个数据项。

    localStorage 和 sessionStorage 都是继承自 Storage 类,因此它们的 API 是一致的。

    唯一不同的是 session 的数据项生命周期是页面关闭之前,localStorage 若不清除则永久存储。

    我们一般不会直接操作 localStorage,可以借助第三方库(如 store2,fastore.js)加快使用效率。