JavaScript中本地存儲(chǔ)(LocalStorage)和會(huì)話存儲(chǔ)(SessionStorage)的使用
我不會(huì)告訴你任何定義和概念,上車,讀完這篇博客,你就會(huì)對(duì)本地存儲(chǔ)(Local Storage) 和 會(huì)話存儲(chǔ)(Session Storage)有一個(gè)清晰的認(rèn)識(shí)。
前提知識(shí)
請(qǐng)按照我以下的步驟來(lái):
1、在任意網(wǎng)頁(yè)中按F12打開開發(fā)者工具

2、單擊Application,即應(yīng)用

3、單擊存儲(chǔ),您將在那里看到本地存儲(chǔ)和會(huì)話存儲(chǔ)。

本地存儲(chǔ)和會(huì)話存儲(chǔ)都存儲(chǔ)鍵值對(duì)。
本地存儲(chǔ)和會(huì)話存儲(chǔ)的主要區(qū)別在于,在 關(guān)閉瀏覽器 后,存儲(chǔ)在 會(huì)話存儲(chǔ) 中的鍵值對(duì)會(huì)丟失。
范例
現(xiàn)在,讓我們通過(guò)一些示例來(lái)了解如何對(duì)本地存儲(chǔ)進(jìn)行操作。
示例1:將鍵值對(duì)提供給本地存儲(chǔ)
localStorage.setItem('Name1', 'uiu');控制臺(tái)執(zhí)行,查看效果

讓我們看看本地存儲(chǔ)的“ typeof ”:

示例2: 本地存儲(chǔ)中設(shè)置鍵值對(duì)
在上面的示例中,我們看到了 如何在本地存儲(chǔ)中設(shè)置鍵值對(duì)。
現(xiàn)在,讓我們了解如何從本地存儲(chǔ)中獲取鍵值對(duì)。
let Name1 = localStorage.getItem('Name1')
console.log(Name1)
示例3: 獲取空值
現(xiàn)在,讓我們嘗試獲取一些不存在的值。
let Name2 = localStorage.getItem('Name2');
console.log(Name2)
如果您嘗試從不存在的本地存儲(chǔ)中獲取某些內(nèi)容,則結(jié)果為 null 。
很多時(shí)候我們希望將數(shù)組存儲(chǔ)在本地存儲(chǔ)中,因?yàn)閿?shù)組很容易使用(我們有很多內(nèi)置的數(shù)組方法)。
但是,本地存儲(chǔ)的一個(gè)限制是它將數(shù)組存儲(chǔ)為字符串。讓我們看看我的意思:
// 本地存儲(chǔ)
localStorage.setItem('WebSite', 'uiuing.com');
// 定義ProgrammingLanguage數(shù)組
let ProgrammingLanguage = ['Java', 'Python', 'JavaScript', 'GO+']
// 本地存儲(chǔ)存儲(chǔ) ProgrammingLanguage數(shù)組
localStorage.setItem('favoriteProgrammingLanguage', ProgrammingLanguage);

為了克服這個(gè)問(wèn)題??,我們使用 JSON.stringify。請(qǐng)看下面的實(shí)際操作
示例 4:將數(shù)組存儲(chǔ)在本地存儲(chǔ)中
現(xiàn)在我們使用 JSON.stringify 將數(shù)組存儲(chǔ)在本地存儲(chǔ)中
localStorage.setItem('WebSite', 'uiuing.com');
let ProgrammingLanguage = ['Java', 'Python', 'JavaScript', 'GO+']
// 這里講原先的ProgrammingLanguage 修改為了 JSON.stringify(ProgrammingLanguage)
localStorage.setItem('favoriteProgrammingLanguage',JSON.stringify(ProgrammingLanguage));

示例 5:從本地存儲(chǔ)中獲取數(shù)組
從本地存儲(chǔ)中獲取數(shù)組。

上面的結(jié)果可能看起來(lái)像一個(gè)數(shù)組,但我們從本地存儲(chǔ)而不是數(shù)組獲取字符串。
讓我證明一下。

因此,為了從本地存儲(chǔ)中獲取數(shù)組,我們使用 JSON.parse ,見(jiàn)下文。
示例 6:從本地存儲(chǔ)中獲取數(shù)組?
現(xiàn)在我們 JSON.parse 使用從本地存儲(chǔ)中獲取數(shù)組
console.log(JSON.parse(localStorage.getItem('favoriteProgrammingLanguage')));
因此,我們使用:
JSON.stringify:將數(shù)組設(shè)置為本地存儲(chǔ)中的值。JSON.parse:從本地存儲(chǔ)中獲取數(shù)組。
示例 7:清除本地存儲(chǔ)
清理前

localStorage.clear()
運(yùn)行后

因此,我們可以使用 localStorage.clear() 來(lái)清除本地存儲(chǔ)
僅從本地存儲(chǔ)中刪除“name1”鍵值對(duì)。
示例 8:僅從本地存儲(chǔ)中刪除 Name1 鍵值對(duì)
localStorage.setItem('Name1', 'uiu');
localStorage.setItem('WebSite', 'uiuing.com');
let ProgrammingLanguage = ['Java', 'Python', 'JavaScript', 'GO+']
localStorage.setItem('favoriteProgrammingLanguage',JSON.stringify(ProgrammingLanguage));

運(yùn)行這條命令試試
localStorage.removeItem('Name1');
正如您在上面看到的,為了刪除我們使用的特定鍵值對(duì) localStorage.removeItem 。
會(huì)話存儲(chǔ)
這就是關(guān)于本地存儲(chǔ)的全部?jī)?nèi)容。
我們?cè)?會(huì)話存儲(chǔ) 中運(yùn)行類似的操作,唯一的區(qū)別是我們 使用 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');
讓我們運(yùn)行一下
sessionStorage.setItem('Name1', 'uiu');
接下來(lái)我們關(guān)閉該網(wǎng)頁(yè),然后重新打開

此時(shí)會(huì)話存儲(chǔ)的數(shù)據(jù)已經(jīng)消失了,而之前示例運(yùn)行的數(shù)據(jù)在本地存儲(chǔ)中還存在


總結(jié)
讓我重申一下:本地存儲(chǔ)和會(huì)話存儲(chǔ)之間唯一的主要區(qū)別是,一旦我們關(guān)閉瀏覽器,我們就會(huì)丟失會(huì)話存儲(chǔ)中保存的任何內(nèi)容。但是,本地存儲(chǔ)并非如此。
最后,讓我們看看 MDN 怎么說(shuō):
窗口界面的 localStorage 只讀屬性允許您訪問(wèn) Document 來(lái)源的 Storage 對(duì)象;存儲(chǔ)的數(shù)據(jù)跨瀏覽器會(huì)話保存。
只讀 sessionStorage 屬性訪問(wèn)當(dāng)前源的會(huì)話存儲(chǔ)對(duì)象。sessionStorage 類似于 localStorage;不同之處在于,雖然 localStorage 中的數(shù)據(jù)不會(huì)過(guò)期,但 sessionStorage 中的數(shù)據(jù)會(huì)在頁(yè)面會(huì)話結(jié)束時(shí)被清除。
到此這篇關(guān)于JavaScript中本地存儲(chǔ)(LocalStorage)和會(huì)話存儲(chǔ)(SessionStorage)的使用的文章就介紹到這了,更多相關(guān)JavaScript本地存儲(chǔ)和會(huì)話存儲(chǔ)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- JavaScript 本地存儲(chǔ)localStorage完全指南及應(yīng)用場(chǎng)景
- javascript中本地存儲(chǔ)localStorage,sessionStorage,cookie,indexDB的用法與使用場(chǎng)景匯總
- Javascript本地存儲(chǔ)localStorage看這一篇就夠了
- javascript中l(wèi)ocalStorage本地存儲(chǔ)(新增、刪除、修改)使用詳細(xì)教程
- JavaScript本地?cái)?shù)據(jù)存儲(chǔ)sessionStorage與localStorage使用詳解
- JS localStorage存儲(chǔ)對(duì)象,sessionStorage存儲(chǔ)數(shù)組對(duì)象操作示例
- JavaScript使用localStorage存儲(chǔ)數(shù)據(jù)
- JavaScript和jQuery存儲(chǔ)localStorage的具體實(shí)現(xiàn)方法詳解
相關(guān)文章
JS實(shí)現(xiàn)自適應(yīng)高度表單文本框的方法
這篇文章主要介紹了JS實(shí)現(xiàn)自適應(yīng)高度表單文本框的方法,實(shí)例分析了針對(duì)IE內(nèi)核與非IE內(nèi)核下的javascript控制文本框樣式的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-02-02
JS實(shí)現(xiàn)table表格固定表頭且表頭隨橫向滾動(dòng)而滾動(dòng)
這篇文章主要介紹了JS實(shí)現(xiàn)table表格固定表頭且表頭可以隨橫向滾動(dòng)而滾動(dòng),需要的朋友可以參考下2017-10-10
JS實(shí)現(xiàn)簡(jiǎn)單的Canvas畫圖實(shí)例
這篇文章介紹了JS實(shí)現(xiàn)簡(jiǎn)單的Canvas畫圖實(shí)例代碼,有需要的朋友可以參考一下2013-07-07
原生js實(shí)現(xiàn)電商側(cè)邊導(dǎo)航效果
本文主要分享了原生js實(shí)現(xiàn)電商側(cè)邊導(dǎo)航效果的示例代碼以及原理分析。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-01-01
解決JS浮點(diǎn)數(shù)運(yùn)算出現(xiàn)Bug的方法
解決JS浮點(diǎn)數(shù)運(yùn)算出現(xiàn)Bug的方法,需要的朋友可以參考一下2013-03-03
JS中獲取函數(shù)調(diào)用鏈所有參數(shù)的方法
這篇文章主要介紹了JS中獲取函數(shù)調(diào)用鏈所有參數(shù)的方法,本文直接給出代碼示例,需要的朋友可以參考下2015-05-05

