如何检查是否设置了存储项目?

我如何检查一个项目是否在localStorage设置? 目前我正在使用

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

如果项目不存在,WebStorage规范中的getItem方法显式返回null

…如果给定的键不存在于与该对象相关联的列表中,则该方法必须返回null。 …

所以你可以:

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

看到这个相关的问题:

  • 将对象存储在HTML5 localStorage中

最简单的方法是使用默认值,如果密钥不在存储中:

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

你也可以尝试这个,如果你想检查未定义:

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

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

如何在localSotorage中testing项目的存在? 这个在Internet Explorer中工作

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

对于TRUE

 localStorage.infiniteScrollEnabled = 1; 

为假

 localStorage.removeItem("infiniteScrollEnabled") 

检查存在

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

你可以使用hasOwnProperty方法来检查这个

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

适用于当前版本的Chrome(Mac),Firefox(Mac)和Safari。

 localStorage['root2']=null; localStorage.getItem("root2") === null //false 

也许最好做一个扫描计划?

 localStorage['root1']=187; 187 'root1' in localStorage true 
 if(!localStorage.hash) localStorage.hash = "thinkdj"; 

要么

 var secret = localStorage.hash || 42; 

您应该检查localStorage中项目的types

 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? }