解決localstorage存儲boolean類型值的小坑
localstorage存儲boolean類型值小坑
今天使用localstorage存儲boolean數(shù)據(jù)時,發(fā)現(xiàn)怎么弄頁面上數(shù)據(jù)顯示就是有問題。
后面才發(fā)現(xiàn),在localstorage中存儲的boolean數(shù)據(jù)都變成了字符串了,才導(dǎo)致的。
所以"true"=true及"false"==false,“true”==false顯示都為false。
localstorage使用不嚴(yán)謹(jǐn)之坑
上線新版本后,發(fā)現(xiàn)極個別“老”用戶在微信瀏覽器中無法打開我們網(wǎng)站的首頁。在經(jīng)過一番線上文件代理替
換后,終于發(fā)現(xiàn)了問題所在。
問題代碼段:
if(localstorage.getItem("things")){
var things = localstorage.getItem("things");
use(things);
//緩存用一次就刪除
localstorage.removeItem('things');
}else{
use(newData);
}
這段代碼乍一看沒什么問題,但是有隱患。在老版本中,localstorage中存的things內(nèi)容如下:
{
name:'px',
age:'25'
}
但是到了新版本,由于需求問題,這個緩存的值改變了,變成了如下結(jié)構(gòu):
{
username:'px',
myage:'25'
}
這樣就導(dǎo)致了在使用use函數(shù)處理things的時候報錯了,導(dǎo)致后面的removeItem永遠(yuǎn)不執(zhí)行,所以緩存的這段數(shù)據(jù)在代碼中永遠(yuǎn)不被清除,use函數(shù)一直使用舊的數(shù)據(jù)進(jìn)行渲染,這樣就一直報錯,永遠(yuǎn)無法使用新數(shù)據(jù)。
這里有兩點(diǎn)需要改進(jìn)的
* 給緩存加版本號 * 用變量讀取緩存后,立刻清除緩存
優(yōu)化后的代碼如下:
//先判斷緩存版本號
if(localstorage.getItem("version") == curVersion){
if(localstorage.getItem("things")){
var things = localstorage.getItem("things");
//立刻清除
localstorage.removeItem('things');
use(things);
}else{
use(newData);
}
}else{
localstorage.removeItem('things');
use(newData);
}
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript比較當(dāng)前時間是否在指定時間段內(nèi)的方法
這篇文章主要介紹了JavaScript比較當(dāng)前時間是否在指定時間段內(nèi)的方法,涉及javascript時間與字符串的轉(zhuǎn)換及比較操作相關(guān)技巧,需要的朋友可以參考下2016-08-08
JavaScript實(shí)現(xiàn)圓形進(jìn)度條效果
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)圓形進(jìn)度條效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08
js實(shí)現(xiàn)的GridView即表頭固定表體有滾動條且可滾動
實(shí)現(xiàn)GridView,表頭固定,表體有滾動條且可滾動,下面有個不錯的示例,希望對大家有所幫助2014-02-02
JS實(shí)現(xiàn)屏蔽網(wǎng)頁右鍵復(fù)制及ctrl+c復(fù)制的方法【2種方法】
這篇文章主要介紹了JS實(shí)現(xiàn)屏蔽網(wǎng)頁右鍵復(fù)制及ctrl+c復(fù)制的方法,結(jié)合實(shí)例形式分析了2種比較常用的屏蔽復(fù)制功能的技巧,需要的朋友可以參考下2016-09-09
JavaScript callback回調(diào)函數(shù)用法實(shí)例分析
這篇文章主要介紹了JavaScript callback回調(diào)函數(shù)用法,結(jié)合實(shí)例形式分析了callback回調(diào)函數(shù)的概念、功能、應(yīng)用場景及相關(guān)使用技巧,需要的朋友可以參考下2018-05-05

