2010-07-16 74 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? 
} 
相关问题