JavaScript中本地存储(LocalStorage)和会话存储(SessionStorage)的使用

 更新时间:2022年03月21日 11:50:51   作者:我想养只猫 •͓͡•ʔ  
本地存储和会话存储是比较常用的方法,你知道两者的区别吗,本文详细的介绍了JavaScript中本地存储(LocalStorage)和会话存储(SessionStorage)的使用,具有一定的参考价值,感兴趣的可以了解一下

我不会告诉你任何定义和概念,上车,读完这篇博客,你就会对本地存储(Local Storage) 和 会话存储(Session Storage)有一个清晰的认识。

前提知识

请按照我以下的步骤来:

1、在任意网页中按F12打开开发者工具

在这里插入图片描述

2、单击Application,即应用

在这里插入图片描述

3、单击存储,您将在那里看到本地存储和会话存储。

在这里插入图片描述

本地存储和会话存储都存储键值对。

本地存储和会话存储的主要区别在于关闭浏览器存储在 会话存储 中的键值对会丢失

范例

现在,让我们通过一些示例来了解如何对本地存储进行操作。

示例1:将键值对提供给本地存储

localStorage.setItem('Name1', 'uiu');

控制台执行,查看效果

在这里插入图片描述

让我们看看本地存储的“ typeof ”:

在这里插入图片描述

示例2: 本地存储中设置键值对

在上面的示例中,我们看到了 如何在本地存储中设置键值对

现在,让我们了解如何从本地存储中获取键值对

let Name1 = localStorage.getItem('Name1')
console.log(Name1)

在这里插入图片描述

示例3: 获取空值

现在,让我们尝试获取一些不存在的值。

let Name2 = localStorage.getItem('Name2');
console.log(Name2)

在这里插入图片描述

如果您尝试从不存在的本地存储中获取某些内容,则结果为 null

很多时候我们希望将数组存储在本地存储中,因为数组很容易使用(我们有很多内置的数组方法)。

但是,本地存储的一个限制是它将数组存储为字符串。让我们看看我的意思:

// 本地存储
localStorage.setItem('WebSite', 'uiuing.com');

// 定义ProgrammingLanguage数组
let ProgrammingLanguage = ['Java', 'Python', 'JavaScript', 'GO+']
// 本地存储存储 ProgrammingLanguage数组
localStorage.setItem('favoriteProgrammingLanguage', ProgrammingLanguage);

在这里插入图片描述

为了克服这个问题☝️,我们使用 JSON.stringify。请看下面的实际操作

示例 4:将数组存储在本地存储中

现在我们使用 JSON.stringify 将数组存储在本地存储中

localStorage.setItem('WebSite', 'uiuing.com');
let ProgrammingLanguage = ['Java', 'Python', 'JavaScript', 'GO+']

// 这里讲原先的ProgrammingLanguage 修改为了 JSON.stringify(ProgrammingLanguage)
localStorage.setItem('favoriteProgrammingLanguage',JSON.stringify(ProgrammingLanguage));

在这里插入图片描述

示例 5:从本地存储中获取数组

从本地存储中获取数组。

在这里插入图片描述

上面的结果可能看起来像一个数组,但我们从本地存储而不是数组获取字符串。

让我证明一下。

在这里插入图片描述


因此,为了从本地存储中获取数组,我们使用 JSON.parse ,见下文。

示例 6:从本地存储中获取数组?

现在我们 JSON.parse 使用从本地存储中获取数组

console.log(JSON.parse(localStorage.getItem('favoriteProgrammingLanguage')));

在这里插入图片描述

因此,我们使用:

JSON.stringify:将数组设置为本地存储中的值。JSON.parse:从本地存储中获取数组。

示例 7:清除本地存储

清理前

在这里插入图片描述

localStorage.clear()

运行后

在这里插入图片描述

因此,我们可以使用 localStorage.clear() 来清除本地存储

仅从本地存储中删除“name1”键值对。

示例 8:仅从本地存储中删除 Name1 键值对

localStorage.setItem('Name1', 'uiu');
localStorage.setItem('WebSite', 'uiuing.com');

let ProgrammingLanguage = ['Java', 'Python', 'JavaScript', 'GO+']
localStorage.setItem('favoriteProgrammingLanguage',JSON.stringify(ProgrammingLanguage));

在这里插入图片描述

运行这条命令试试

localStorage.removeItem('Name1');

在这里插入图片描述

正如您在上面看到的,为了删除我们使用的特定键值对 localStorage.removeItem

会话存储

这就是关于本地存储的全部内容。

我们在 会话存储 中运行类似的操作,唯一的区别是我们 使用 sessionStorage 代替 localStorage

// 示例1
sessionStorage.setItem('Name1', 'uiu');

// 示例2
sessionStorage.getItem('Name1');

// 示例4
let ProgrammingLanguage = ['Java', 'Python', 'JavaScript', 'GO+']
sessionStorage.setItem('favoriteProgrammingLanguage',JSON.stringify(ProgrammingLanguage));

// 示例6
console.log(JSON.parse(sessionStorage.getItem('favoriteProgrammingLanguage')));

// 示例7
sessionStorage.clear()

// 示例8
sessionStorage.removeItem('Name1');

让我们运行一下

sessionStorage.setItem('Name1', 'uiu');

在这里插入图片描述

接下来我们关闭该网页,然后重新打开

在这里插入图片描述

此时会话存储的数据已经消失了,而之前示例运行的数据在本地存储中还存在

在这里插入图片描述

在这里插入图片描述

总结

让我重申一下:本地存储和会话存储之间唯一的主要区别是,一旦我们关闭浏览器,我们就会丢失会话存储中保存的任何内容。但是,本地存储并非如此。

最后,让我们看看 MDN 怎么说:

  • 窗口界面的 localStorage 只读属性允许您访问 Document 来源的 Storage 对象;存储的数据跨浏览器会话保存。

  • 只读 sessionStorage 属性访问当前源的会话存储对象。sessionStorage 类似于 localStorage;不同之处在于,虽然 localStorage 中的数据不会过期,但 sessionStorage 中的数据会在页面会话结束时被清除。

 到此这篇关于JavaScript中本地存储(LocalStorage)和会话存储(SessionStorage)的使用的文章就介绍到这了,更多相关JavaScript本地存储和会话存储内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JavaScript简单实现关键字文本搜索高亮显示功能示例

    JavaScript简单实现关键字文本搜索高亮显示功能示例

    这篇文章主要介绍了JavaScript简单实现关键字文本搜索高亮显示功能,涉及javascript基于事件响应的页面元素遍历、分割、替换等相关操作技巧,需要的朋友可以参考下
    2018-07-07
  • JavaScript中的事件处理程序

    JavaScript中的事件处理程序

    这篇文章介绍了JavaScript中的事件处理程序,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • 原生js实现弹出层效果

    原生js实现弹出层效果

    本文主要介绍了原生js实现弹出层效果的示例代码。具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • js实现3D旋转相册

    js实现3D旋转相册

    这篇文章主要为大家详细介绍了js实现3D旋转相册,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • js不能获取隐藏的div的宽度只能先显示后获取

    js不能获取隐藏的div的宽度只能先显示后获取

    js不能获取隐藏div的的宽度,现在的办法是先将其显示出来,再获取其宽度,计算位置,下面的示例,大家可以参考下
    2014-09-09
  • chrome原生方法之数组

    chrome原生方法之数组

    由于各浏览器的js实现不同,因此各浏览器的原生对象(这里不涉及DOM实现,当然这也有区别)的原生方法也不尽相同,采用原生方法的好处显而易见,使用兼有效率,而且其中有些方法可能包含在以后的ECMAscript规范中
    2011-11-11
  • javascript随机抽取0-100之间不重复的10个数

    javascript随机抽取0-100之间不重复的10个数

    这篇文章主要为大家详细介绍了javascript随机抽取0-100之间不重复的10个数,分享了两种简单办法,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • 详解cesium实现大批量POI点位聚合渲染优化方案

    详解cesium实现大批量POI点位聚合渲染优化方案

    这篇文章主要为大家介绍了cesium实现大批量POI点位聚合渲染优化方案详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • 前淘宝前端开发工程师阿当的PPT中有JS技术理念问题

    前淘宝前端开发工程师阿当的PPT中有JS技术理念问题

    第一届 web rebuild 北京会有个前淘宝前端开发工程师阿当分享的 PPT 在公司团队内部有同事下载的分享,然后看了。发现了有些技术理念的问题:
    2010-01-01
  • JS判断字符串变量是否含有某个字串的实现方法

    JS判断字符串变量是否含有某个字串的实现方法

    下面小编就为大家带来一篇JS判断字符串变量是否含有某个字串的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06

最新评论