一.相同点
- 作用一致 : 用于存储数据
- 都是只能存储字符串类型数据(上限5MB)
- localStorage和sessionStorage只能存储字符串类型,对于复杂的对象 可以使用ECMAScript提供的JSON对象的stringify和parse来处理
二.不同点
1.存储方式不同
localStorage : 硬盘存储(永久存储,页面关闭还在,存在硬盘里)- localStorage:生命周期是永久,储存的信息是永远不会消失的,除非你自己主动清除localStorage信息。
sessionStorage :内存存储(临时存储,页面关闭了就消失了)- sessionStorage仅在当前会话下生效,当你关闭页面或浏览器后你存储的sessionStorage数据会被清除。
2.各自的使用方法不同
sessionStorage使用方法
-
第一个参数是保存的变量名,第二个是变量的值
sessionStorage.setItem('sname', 'session');
-
获取sessionStorage的数据
sessionStorage.getItem('sname');
-
删除某个sessionStorage的数据
sessionStorage.removeItem('sname');
-
清除所有保存的sessionStorage数据
sessionStorage.clear();
localStorage使用方法
1、第一个参数是保存的变量名,第二个是变量的值
localStorage.setItem('lname', 'local');
2、获取localStorage的数据
localStorage.getItem('lname');
3、删除某个localStorage的数据
localStorage.removeItem('lname');
4、清除所有保存的localStorage数据
localStorage.clear();
三.可在浏览器的控制台中查看localStorage储存的数据:
四.清除localStorage的方法:
1.代码删除: localStorage.clear()
2.或者直接:
五.作用域不同
- localStorage只要在相同的协议、相同的主机名、相同的端口下,就能读取/修改到同一份localStorage数据。
- sessionStorage比localStorage更严苛一点,除了协议、主机名、端口外,还要求在同一窗口(也就是浏览器的标签页)下。
六.生存期不同
- localStorage理论上来说是永久有效的,即不主动清空的话就不会消失,即使保存的数据超出了浏览器所规定的大小,也不会把旧数据清空而只会报错。但需要注意的是,在移动设备上的浏览器或各Native App用到的WebView里,localStorage都是不可靠的,可能会因为各种原因(比如说退出App、网络切换、内存不足等原因)被清空。
- sessionStorage的生存期顾名思义,类似于session,只要关闭浏览器(也包括浏览器的标签页),就会被清空。由于sessionStorage的生存期太短,因此应用场景很有限,但从另一方面来看,不容易出现异常情况,比较可靠。
七.应用场景不同
- localStorage:常用于长期登录(+判断用户是否已登录),适合长期保存在本地的数据。每天 , 我们进入某个网页 , 天天访问同一个网页 , 不需要输入账号密码 , 这是因为localStorage发挥了作用。
- sessionStorage:敏感账号一次性登录 ,适合游客访问某一个网页。