JavaScript本地存储与会话存储的实现介绍

作者:青柠时间:2026-10-25 18:45:57浏览:366

本文介绍JavaScript中localStorage与sessionStorage的实现方式。通过封装函数演示如何存储和获取数据,重点阐述两者在数据生命周期上的核心差异:localStorage持久保留,sessionStorage随页面会话关闭而清除。

一、简单介绍

本地存储与会话存储旨在将输入的文件数据保存至浏览器,以便后续直接调用。二者存在明显区别:本地存储在不主动删除的情况下,数据会一直保留在浏览器中;而会话存储仅在当前页面刷新时保留数据,一旦关闭页面再重新打开,之前保存的数据便会丢失。这是两者的主要用途与区别所在。

二、localStorage本地存储

如下代码

首先为按钮添加监听事件,以便执行存入数据的动作。

为了在提交后能在页面上显示结果,定义了一个li元素,将input的value值赋值到ul列表中。

此处使用了insertBefore方法,在添加元素时会将其置于最上方。

这里的arr是自行定义的数组。

数据的存储和获取均通过封装函数来实现。

savaData(arr)函数的作用是将input的值存储到浏览器中。

window.localStorage.setItem('input', JSON.stringify(title))用于保存代码,其中title是形参,input由代码自行获取。

获取数据使用let data = window.localStorage.getItem('input'),即上面保存的input键名。

此处包含一个if判断,用于检查data是否有内容;若有内容则return JSON.parse(data),若无则return [],主要目的是获取所有内容的数组。

代码段中也包含注释进行解释。

<style>
        li {
            list-style: none;
        }
    </style>
</head>
<body>
    <input type="text" placeholder="输入内容"><button>提交</button>
    <hr>
    <ul></ul>
    <script>
        let input = document.querySelector('input')
        let btn = document.querySelector('button')
        let ul = document.querySelector('ul')
        btn.addEventListener('click', function () {
            let arr = getData()  //调用内容,是为了获得已经存入的内容,不然会出现内容覆盖
            let li = document.createElement('li')
            li.innerHTML = input.value; //表单值给到li
            ul.insertBefore(li, ul.children[0]);//在把值给到ul添加值会在第一个
            arr.push(input.value)
            saveData(arr)
            input.value = '' //为好看,输入过后表单的内容自动清空
        })
        function saveData(title) {
            window.localStorage.setItem('input', JSON.stringify(title))
        }
        function getData(get) {
            let data = window.localStorage.getItem('input')
            console.log(data);//打印所取到的值,但是第一次为空,因为浏览器里面没有值
            if (data != null) {
                return JSON.parse(data)
            } else {
                return []
            }
        }
    </script>
</body>

三、sessionStorage会话存储

其使用方式与本地存储没有区别,只需更换单词即可。

window.sessionStorage.setItem('input', JSON.stringify(title))

let data = window.sessionStorage.getItem('input')

    <style>
        li {
            list-style: none;
        }
    </style>
</head>
<body>
    <input type="text" placeholder="输入内容"><button>提交</button>
    <hr>
    <ul></ul>
    <script>
        let input = document.querySelector('input')
        let btn = document.querySelector('button')
        let ul = document.querySelector('ul')
        btn.addEventListener('click', function () {
            let arr = getData()
            let li = document.createElement('li')
            li.innerHTML = input.value;
            ul.insertBefore(li, ul.children[0]);
            arr.push(input.value)
            saveData(arr)
            input.value = ''
        })
        function saveData(title) {
            window.sessionStorage.setItem('input', JSON.stringify(title))
        }
        function getData(get) {
            let data = window.sessionStorage.getItem('input')
            console.log(data);
            if (data != null) {
                return JSON.parse(data)
            } else {
                return []
            }
        }
    </script>
</body>

总结

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

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

  • 窗口界面的 localStorage 只读属性允许您访问 Document 来源的 Storage 对象;存储的数据跨浏览器会话保存。
  • 只读 sessionStorage 属性访问当前源的会话存储对象。sessionStorage 类似于 localStorage;不同之处在于,虽然 localStorage 中的数据不会过期,但 sessionStorage 中的数据会在页面会话结束时被清除。

到此这篇关于JavaScript本地存储与会话存储的实现介绍的文章就介绍到这了,更多相关JS本地存储与会话存储内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

作者最新文章