Comment puis-je vérifier si un élément est défini dans localStorage
? J'utilise actuellement
if (!(localStorage.getItem("infiniteScrollEnabled") == true || localStorage.getItem("infiniteScrollEnabled") == false)) {
// init variable/set default variable for item
localStorage.setItem("infiniteScrollEnabled", true);
}
La méthode getItem
dans la spécification WebStorage renvoie explicitement null
si l'élément n'existe pas:
... Si la clé donnée n'existe pas dans la liste associée à l'objet, cette méthode doit renvoyer null. ...
Afin que vous puissiez:
if (localStorage.getItem("infiniteScrollEnabled") === null) {
//...
}
Voir cette question connexe:
Vous pouvez utiliser la méthode hasOwnProperty
pour vérifier ceci
> localStorage.setItem('foo', 123)
undefined
> localStorage.hasOwnProperty('foo')
true
> localStorage.hasOwnProperty('bar')
false
Fonctionne dans les versions actuelles de Chrome (Mac), Firefox (Mac) et Safari.
Le moyen le plus court consiste à utiliser la valeur par défaut, si la clé n'est pas en mémoire:
var sValue = localStorage['my.token'] || ''; /* for strings */
var iValue = localStorage['my.token'] || 0; /* for integers */
Vous pouvez aussi essayer ceci si vous voulez vérifier non défini:
if (localStorage.user === undefined) {
localStorage.user = "username";
}
getItem est une méthode qui renvoie la valeur null si la valeur est introuvable.
Vous devriez vérifier le type de l’élément dans le 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?
}
Pour de vrai
localStorage.infiniteScrollEnabled = 1;
POUR FAUX
localStorage.removeItem("infiniteScrollEnabled")
VÉRIFIER L'EXISTANCE
if (localStorage[""infiniteScrollEnabled""]) {
//CODE IF ENABLED
}
if(!localStorage.hash) localStorage.hash = "thinkdj";
Ou
var secret = localStorage.hash || 42;
Comment peut-on tester l'existence d'un élément dans localStorage
? cette méthode fonctionne dans Internet Explorer.
<script>
try{
localStorage.getItem("username");
}catch(e){
alert("we are in catch "+e.print);
}
</script>
localStorage['root2']=null;
localStorage.getItem("root2") === null //false
Peut-être mieux faire une analyse du plan?
localStorage['root1']=187;
187
'root1' in localStorage
true
Le meilleur et le plus sûr moyen que je puisse suggérer est ceci,
_if(Object.prototype.hasOwnProperty.call(localStorage, 'infiniteScrollEnabled')){
// init variable/set default variable for item
localStorage.setItem("infiniteScrollEnabled", true);
}
_
Cela passe par la règle no-prototype-builtins
d'ESLint.