HTML5 LocalStorage: Checking if a key exists

JavascriptHtmlCordovaLocal Storage

Javascript Problem Overview


Why this does not work ?

if(typeof(localStorage.getItem("username"))=='undefined'){
	alert('no');
};

The goal is to redirect the user from the index page to the login page if not already logged. Here the localStorage.getItem("username")) variable is not defined for the moment.

It's for an ios phonegap app.

Javascript Solutions


Solution 1 - Javascript

Quoting from the specification:

> The getItem(key) method must return the current value associated with the given key. If the given key does not exist in the list associated with the object then this method must return null.

You should actually check against null.

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

Solution 2 - Javascript

This method worked for me:

if ("username" in localStorage) {
    alert('yes');
} else {
    alert('no');
}

Solution 3 - Javascript

Update:

if (localStorage.hasOwnProperty("username")) {
    //
}

Another way, relevant when value is not expected to be empty string, null or any other falsy value:

if (localStorage["username"]) {
    //
}

Solution 4 - Javascript

The MDN documentation shows how the getItem method is implementated:

Object.defineProperty(oStorage, "getItem", {
      value: function (sKey) { return sKey ? this[sKey] : null; },
      writable: false,
      configurable: false,
      enumerable: false
    });

If the value isn't set, it returns null. You are testing to see if it is undefined. Check to see if it is null instead.

if(localStorage.getItem("username") === null){

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionGabrielView Question on Stackoverflow
Solution 1 - JavascriptUltraInstinctView Answer on Stackoverflow
Solution 2 - Javascriptuser3332298View Answer on Stackoverflow
Solution 3 - JavascriptDerinView Answer on Stackoverflow
Solution 4 - JavascriptQuentinView Answer on Stackoverflow