如何检查 localStorage
中是否设置了项目?目前我正在使用
if (!(localStorage.getItem("infiniteScrollEnabled") == true || localStorage.getItem("infiniteScrollEnabled") == false)) {
// init variable/set default variable for item
localStorage.setItem("infiniteScrollEnabled", true);
}
您可以使用 hasOwnProperty
方法来检查这个
> localStorage.setItem('foo', 123)
undefined
> localStorage.hasOwnProperty('foo')
true
> localStorage.hasOwnProperty('bar')
false
适用于当前版本的 Chrome(Mac)、Firefox(Mac) 和 Safari。
null
值。您可以拥有 "null"
,但那里的代码不会在其上出现异常,而此代码将在 length
键上失败。
JSON.parse("null") === JSON.parse(null)
我发生了冲突。
foo
是否存在,而不是 foo 是否有值。我有这种情况,点击事件触发 .setitem
并使用基于 getItem 的逻辑,但在我 setItem 之前它不会起作用,并且在我知道 foo 的状态(value1 或 value2)之前我不能 setItem。换句话说,检查 foo 退出然后将其设置为 value1,如果它没有意外覆盖 value2。
最短的方法是使用默认值,如果键不在存储中:
var sValue = localStorage['my.token'] || ''; /* for strings */
var iValue = localStorage['my.token'] || 0; /* for integers */
if(!localStorage.hash) localStorage.hash = "thinkdj";
或者
var secret = localStorage.hash || 42;
有几种方法可以检查我在这里添加它们
方法一
if("infiniteScrollEnabled" in localStorage){
console.log("Item exists in localstorage");
}else{
console.log("Item does not exist in localstoarge";
}
方法二
if(localStorage.getItem("infiniteScrollEnabled") === null){
console.log("Item does not exist in localstoarge";
}else{
console.log("Item exists in localstorage");
}
方法三
if(typeof localStorage["cart"] === "undefined"){
console.log("Item does not exist in localstoarge";
}else{
console.log("Item exists in localstorage");
}
方法四
if(localStorage.hasOwnProperty("infiniteScrollEnabled")){
console.log("Item exists in localstorage");
}else{
console.log("Item does not exist in localstoarge";
}
如果你想检查未定义,你也可以试试这个:
if (localStorage.user === undefined) {
localStorage.user = "username";
}
getItem 是一种方法,如果未找到值,则返回 null。
可以尝试这样的事情:
let x = localStorage.getItem('infiniteScrollEnabled') === null ? "not found" : localStorage.getItem('infiniteScrollEnabled')
为真
localStorage.infiniteScrollEnabled = 1;
为假
localStorage.removeItem("infiniteScrollEnabled")
检查存在
if (localStorage[""infiniteScrollEnabled""]) {
//CODE IF ENABLED
}
如何测试 localStorage
中某项的存在?此方法适用于 Internet Explorer。
<script>
try{
localStorage.getItem("username");
}catch(e){
alert("we are in catch "+e.print);
}
</script>
try | catch
。
您应该检查 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?
}
我能建议的最好和最安全的方法是这样,
if(Object.prototype.hasOwnProperty.call(localStorage, 'infiniteScrollEnabled')){
// init variable/set default variable for item
localStorage.setItem("infiniteScrollEnabled", true);
}
这通过 ESLint 的 no-prototype-builtins
规则。
我已经在我的项目中使用过并且非常适合我
var returnObjName= JSON.parse(localStorage.getItem('ObjName'));
if(returnObjName && Object.keys(returnObjName).length > 0){
//Exist data in local storage
}else{
//Non Exist data block
}
我参加这个聚会迟到了,但是使用我创建的一个方便的实用程序包装器 localDataStorage 可以轻松地检查 localStorage 是否存在键(或键值的存在)。
在用类似的东西实例化包装器之后
myLDS = localDataStorage( 'segmentedStorageHere' );
你可以设置键
myLDS.set( 'infiniteScrollEnabled', true );
以直截了当的方式。请注意,此示例实际上是将布尔值传递给商店,可以在其中检索它
let scrollingState = myLDS.get( 'infiniteScrollEnabled' );
scrollingState 将包含返回的布尔值。包装器会无缝地为您跟踪原生 JavaScript 数据类型(数组、布尔值、日期、数字、对象等)。您的代码中不再需要 JSON 字符串化/解析。
现在,当我们需要知道密钥是否在商店中时,我们可以像这样检查它
if( myLDS.haskey( 'infiniteScrollEnabled' ) ) {
console.log( "It's been set!" );
} else {
console.log( "The key is not set." );
}
您还可以检查是否存在特定值。例如
myLDS.set( 'myNumber', 1234.5678 );
console.log( myLDS.hasval( 1234.5678 ) ); --> true
正如@Christian C. Salvadó 上面提到的,您可以这样做if (xxx === null){}
但 null 也是一个虚假值,如下所示:
if (null){
console.log ("hello");
}
不打印“你好”。
localStorage['root2']=null;
localStorage.getItem("root2") === null //false
也许更好地扫描计划?
localStorage['root1']=187;
187
'root1' in localStorage
true
我总是通过检查它们的长度来检查是否设置了 localStorage 或 sessionStorage
if (sessionStorage.length > 0) {
console.log("exists")
} else {
console.log("not exists")
}
试试这个代码
if (localStorage.getItem("infiniteScrollEnabled") === null) {
} else {
}
localStorage
来封装这个小测试?例如localStorage.hasItem("infiniteScrollEnabled")
?Storage.prototype
对象,但根据经验,我总是推荐 not modify objects you don't own,特别是主机对象。Storage
接口的当前版本明确指出值是DOMString
类型。 w3.org/TR/webstorage/#the-storage-interface