localStorage和sessionStorage的区别

localStorage和sessionStorage的区别

在日常的web开发中经常会遇到数据存储的问题,往往会用到这两个方法,这两个方法长得很像。接下来让我们看下localStorage和sessionStorage的使用方法和区别吧。

那么首先什么是LocalStorage和SessionStorage?

localStorage和sessionStorage是Web存储API的两种形式,它们允许网页在用户的浏览器上存储数据,但它们在作用域、生命周期和数据共享等方面有所不同。localStorage和sessionStorage的使用方法包括存储数据、获取数据和删除数据等操作。

localStorage和sessionStorage的使用方法

存储数据:使用setItem(key, value)方法存储数据。对于对象,需要先使用JSON.stringify()将对象转换为字符串形式。例如

localStorage.setItem("username", "张三");

获取数据:使用getItem(key)方法通过键名获取对应的值。如果获取的是对象,需要使用JSON.parse()将字符串解析回对象。例如

var username = localStorage.getItem("username");

更新数据:更新数据实际上就是存储新值覆盖旧值,直接使用setItem方法即可。例如

localStorage.setItem("username", "李四");

删除数据:使用removeItem(key)方法删除特定的数据项。例如

localStorage.removeItem("username");

清空数据:使用clear()方法清空存储区域中的所有数据。例如

localStorage.clear();

避雷

当需要在 localStorage 中存储对象时,需要先将对象转换为字符串形式,因为 localStorage 只能存储字符串数据。很坑吧!!!
你可以使用 JSON.stringify() 方法将对象转换为 JSON 字符串,然后将其存储在 localStorage 中。当你需要使用存储的对象时,可以使用 JSON.parse() 方法将 JSON 字符串转换回原始的 JavaScript 对象。虽然很难坑但还是有解决方法的。
接下来是一段示例代码。

// 创建一个对象
const myObject = {
  name: 'John',
  age: 30,
  city: 'New York'
};

// 将对象转换为 JSON 字符串并存储到 localStorage
localStorage.setItem('myObject', JSON.stringify(myObject));

// 从 localStorage 获取 JSON 字符串并将其转换回对象
const retrievedObject = JSON.parse(localStorage.getItem('myObject'));

console.log(retrievedObject); // 输出:{ name: 'John', age: 30, city: 'New York' }

localStorage和sessionStorage的区别

作用域:localStorage的作用域是永久的,数据在不同会话之间共享。即使关闭并重新打开浏览器,数据依然存在。而sessionStorage的作用域限定在当前会话,即当前浏览器标签页或窗口。当会话结束(如关闭标签页或浏览器时),数据会被删除。

生命周期:localStorage中的数据是持久化的,不会因为浏览器的关闭而被清除。相反,sessionStorage的数据在会话结束时就会被清除。这使得localStorage更适合长期存储数据,而sessionStorage适合临时存储数据。

存储容量:通常来说,这两者的存储容量都在5MB左右,但具体的容量限制因浏览器而异。一般来说,localStorage的容量限制比sessionStorage稍大一些。

数据共享:localStorage的数据在同一个域名下的所有标签页和窗口中共享,而sessionStorage的数据仅在当前标签页或窗口中有效,其他标签页或窗口无法访问到这些数据

接下来我们通过表格直观对比一下

特性LocalStorageSessionStorage
作用域永久,数据在不同会话之间共享限定在当前会话,即当前浏览器标签页或窗口
生命周期数据持久保存,直到被显式清除数据在会话结束时被清除
存储容量约5MB到10MB约5MB
数据共享同一域名下的所有标签页和窗口中共享仅在当前标签页或窗口中有效
使用方法用 setItem 方法存储,getItem 获取同LocalStorage,但仅限于当前会话

简单来说 想要永久存储切换页面不丢失数据的选LocalStorage。
临时使用单页面使用选SessionStorage。

  • 19
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值