【问题标题】:How to check null/undefined string value when get from localStorage从localStorage获取时如何检查空/未定义的字符串值
【发布时间】:2019-11-04 18:06:01
【问题描述】:

我有这样的用例:

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 获得 language 时,其值为 nullundefined。我收到的结果是一个字符串("null""undefined"

在当前代码中,我像这样检查手册:

const getLanguage = localStorage.getItem("language");
const defalutLanguage = "en";
const currentLanguage = ( getLanguage && getLanguage !== "null" 
      && getLanguage !== "undefined" ) ? getLanguage : defalutLanguage

但是,我知道这是一个坏方法。那么,有什么方法可以快速检查我的情况吗?

感谢任何帮助

【问题讨论】:

  • localStorage.getItem 无论如何都不会返回undefined
  • 看起来很合理,但除非您需要区分 null 和 undefined,否则当得到的 language 错误时,请考虑使用空字符串调用 setItem。更容易不输入您以后会忽略的数据
  • @Bravo 存储在 localStorage 中的 string 在这里是'undefined'。有点奇怪
  • 不,localStorage.getItem 将返回字符串“undefined”或字符串“null”
  • @CertainPerformance - 啊,好吧 - 我猜想阅读整个问题是值得的:p

标签: javascript local-storage


【解决方案1】:

请使用 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;

【讨论】:

  • 不,使用"null" or "undefined",您可以使用JSON.parse。但是像"en" or "jp"这样的字符串,这样会抛出错误
  • @jdn 请立即查看
  • 你的方法很好。但就我而言,我不想将对象保存到localStorage
  • @jdn 对不起,我没有看到任何其他方式
猜你喜欢
  • 2021-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多