2010-07-16 70 views
182

如何檢查localStorage中是否設置了項目?目前我使用如何檢查是否設置了Storage項目?

if (!(localStorage.getItem("infiniteScrollEnabled") == true || localStorage.getItem("infiniteScrollEnabled") == false)) { 
    // init variable/set default variable for item 
    localStorage.setItem("infiniteScrollEnabled", true); 
} 
+2

似乎該項目的類型,你將有一個問題,而無需存儲互斥 – 4esn0k 2013-07-11 06:37:51

回答

327

在WebStorage規範的getItem方法,明確地返回null如果該項目不存在:

...如果給定的密鑰不與相關聯的列表存在那麼該方法必須返回null。 ...

所以,你可以:

if (localStorage.getItem("infiniteScrollEnabled") === null) { 
    //... 
} 

請參閱此相關的問題:

+0

你可以添加你自己的方法'localStorage'封裝這個小測試?例如。 'localStorage.hasItem( 「infiniteScrollEnabled」)'? – 2010-07-17 01:10:07

+2

@Paul:是的,你甚至可以增加'Storage.prototype'對象,但作爲一個經驗法則,我總是建議[不要修改你不擁有的對象](http://www.nczonline.net/blog/2010/03/02/maintainable-javascript-dont-modify-objects-you-down-own /),特別是宿主對象。 – CMS 2010-07-17 18:10:03

+0

哦,是的,在那裏好點。從CSS背景來看,我可以自己修復瀏覽器問題的想法令人興奮,但是我可以看到瀏覽器對象的混亂可能會令人困惑。 – 2010-07-19 09:38:58

11

最短的方法是使用默認值,如果key未儲存:

var sValue = localStorage['my.token'] || ''; /* for strings */ 
var iValue = localStorage['my.token'] || 0; /* for integers */ 
0
localStorage['root2']=null; 

localStorage.getItem("root2") === null //false 

也許最好做一個掃描計劃?

localStorage['root1']=187; 
187 
'root1' in localStorage 
true 
1

對於真正

localStorage.infiniteScrollEnabled = 1; 

虛假

localStorage.removeItem("infiniteScrollEnabled") 

檢查所有腦幹

if (localStorage[""infiniteScrollEnabled""]) { 
    //CODE IF ENABLED 
} 
2

如何測試在localSotorage項目的存在呢? 在Internet Explorer,這一個工作

<script> 
    try{ 
     localStorage.getItem("username"); 
    }catch(e){ 
     alert("we are in catch "+e.print); 
    } 
</script> 
+2

它當然不應該;對於不存在的鍵,getItem只返回null。 – EricLaw 2016-03-30 16:09:00

+0

我與IE有同樣的問題,這是它的修復程序,++ – edencorbin 2016-06-07 01:25:25

+0

你絕對應該嘗試|在分析項目時捕獲。 – 2017-11-09 13:11:31

4

您還可以,如果你想檢查未定義試試這個:

if (localStorage.user === undefined) { 
    localStorage.user = "username"; 
} 

的getItem是如果找不到值返回null的方法。

0
if(!localStorage.hash) localStorage.hash = "thinkdj"; 

或者

var secret = localStorage.hash || 42; 
+0

這工作。爲什麼downvote? – 2016-09-08 10:43:12

3

您可以使用hasOwnProperty方法在Chrome瀏覽器(蘋果機),Firefox(蘋果)和Safari瀏覽器的最新版本,以檢查此

> localStorage.setItem('foo', 123) 
undefined 
> localStorage.hasOwnProperty('foo') 
true 
> localStorage.hasOwnProperty('bar') 
false 

作品。

0

您應該檢查在localStorage的

if(localStorage.token !== null) { 
    // this will only work if the token is set in the localStorage 
} 

if(typeof localStorage.token !== 'undefined') { 
    // do something with token 
} 

if(typeof localStorage.token === 'undefined') { 
    // token doesn't exist in the localStorage, maybe set it? 
} 
相關問題