Javascript 从localStorage获取时如何检查空/未定义的字符串值
我有这样的用例:Javascript 从localStorage获取时如何检查空/未定义的字符串值,javascript,local-storage,Javascript,Local Storage,我有这样的用例: const language = "en"/"jp"/null/undefined; // Here is my language value that I get from server // It could be "en", "jp" , null or undefined // I set language value into localStorage localStorage.setItem("language", language) // Somewher
const language = "en"/"jp"/null/undefined;
// Here is my language value that I get from server
// It could be "en", "jp" , null or undefined
// I set language value into localStorage
localStorage.setItem("language", language)
// Somewhere I get language from localStorage
localStorage.getItem("language");
我的问题是,当我从localStorage获取语言
时,其值为null
或未定义
。我收到的结果是一个字符串(“null”
或“undefined”
)
在当前代码中,我的检查手册如下:
const getLanguage = localStorage.getItem("language");
const defalutLanguage = "en";
const currentLanguage = ( getLanguage && getLanguage !== "null"
&& getLanguage !== "undefined" ) ? getLanguage : defalutLanguage
但是,我知道这是一种不好的方式。那么,有什么方法可以快速检查我的案例吗?
感谢您的帮助请使用JSON解析器
const language = "en"/"jp"/null/undefined;
localStorage.setItem("language", JSON.stringify({ language }) );
const getLanguage = JSON.parse(localStorage.getItem("language")).language;
const defalutLanguage = "en";
const currentLanguage = getLanguage ? getLanguage : defalutLanguage;
<代码>本地存储。GestITEM <代码>将永远不会返回<代码>未定义。任何方式看起来都是合理的,但是除非您需要区分空和未定义,否则请考虑用空字符串调用<代码> SETITEM < /代码>,当<代码>语言< /代码>获得FalSy时。更容易避免输入您将忽略的数据later@Bravo存储在localStorage中的字符串在这里是
“未定义的”
。有点奇怪,localStorage.getItem将返回一个字符串“undefined”或字符串“null”@CertainPerformance-ah,OK-pay来阅读整个问题,我猜:pNo,使用“null”或“undefined”
,您可以使用JSON.parse
。但是对于像“en”或“jp”
这样的字符串,这种方法可以抛出Error@jdn现在请检查你的工作方式。但在我的情况下,我不想将对象保存到localStorage
@jdn抱歉,我看不到任何其他方法