Search code examples
javascriptlocal-storagesessionstorage

Cast "null" as null in javascript


I use the session storage to set a key that can take numeric values or null. I noticed that the field is stored as a string no matter what I put in. Is there a nice way to convert back my stored value to null ?

For instance, I want to do a check in my code as such:

if (!sessionStorage.getItem('key')) {
   // do something
}

Whats the best way to make that check? The obvious way would be

 if (!sessionStorage.getItem('key') !== "null") {
       // do something
 }

I am wondering if there's an alternative.


Solution

  • I just want something that would evaluate to false

    You could use an empty string instead to mark the unset value:

    sessionStorage.setItem('key','');
    

    This way you can re-use your current check:

    if (!sessionStorage.getItem('key')) {
       // do something
    }
    

    That said, you mentioned you had a drop down to select values, and that's why you need such a value, but I think a solution involving deleting the item on the null value would be better. Here's a working demo, and the code used to make it:

    var dd = document.getElementById('dropdown');
    
    dd.addEventListener('change', function(){
      var value = this.value;
      if (value === 'null')
        sessionStorage.removeItem('key');
      else sessionStorage.setItem('key', value);
    });
    
    var check = document.getElementById('check');
    check.addEventListener('click', function(){
        this.innerHTML = 'Value: '+sessionStorage.getItem('key')+
                         ', check: '+(!sessionStorage.getItem('key'));
    });
    
    <select id="dropdown">
      <option value="null">none</option>
      <option>1</option>
      <option>2</option>
      <option>3</option>
      <option>4</option>
      <option>5</option>
    </select>
    
    <button id="check">Check value</button>