I have a token stored in localStorage, I have also a method that verifies if the token is correct or not, as you can see in this code:
let token = localStorage.getItem('token');
console.log(token);
if ( !token )
{
return null;
}
const parts = token.split('.');
if ( parts.length !== 3 )
{
throw new Error('error');
}
....
if the token is undefined I will return null, else continue the verification.
There are two issues I can't understand:
if ( !token ) return false when token is undefined, the first console.log return undefined, but my method continues to const parts = token.split('.');.Local storage work only with strings.
MDN: Window.localStorage
The keys and the values stored with localStorage are always in the UTF-16 DOMString format, which uses two bytes per character. As with objects, integer keys are automatically converted to strings.
https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage
So, every value is serialized as a string.
localStorage.setItem('token', undefined);
let token = localStorage.getItem('token');
console.log(token);
console.log(typeof(token));
Prints out in the console:
undefined
string
Conclusions:
null and undefined in Local Storage.string value.Notes:
false by default. And only in case of success should return true.