javascript 检查localStorage变量是否存在,然后设置else if函数

yiytaume  于 2023-03-11  发布在  Java
关注(0)|答案(3)|浏览(410)

我正在尝试编码:
1.我在localStorage中设置了变量
1.然后,在重新加载页面时,检查该变量是否存在
1.如果存在,则不执行任何操作
1.否则将变量设置为localStorage
但我很纠结于此。
这是我的代码:

function populateStorage() {
    var pictureSrc = [ new Logo({"picSrcl":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTMzIiBoZWlna........48L3N2Zz4K"}),];
    var lS = JSON.parse(localStorage.getItem("Logos"));
    if (lS === true) {
        // here is where I am failing not to overwrite Logos variable
    } else {
        localStorage.setItem("Logos", JSON.stringify(pictureSrc));
    }
}

如果Logos变量已经存在,如何完成不覆盖它的任务?

vyswwuz2

vyswwuz21#

在代码中,将lStrue进行比较。因为如果lS存在于localStorage中,则它是一个数组;如果null不存在,则它是一个数组(由于localStorage.getItem()对于不存在的项返回null,并且JSON.parse()null解析为null),这将 * 总是 * 为假。您可以检查它是否为null
此外,由于您只是检查该项是否存在,因此实际上也不需要解析它;您可以简单地检查localStorage.getItem()返回的值是否为null
以下是应用了这些更改的相关代码:

var lS = localStorage.getItem("Logos"); // Removed JSON.parse()

if (lS !== null) { // Changed from `=== true` to `!== null`
  // Don't do anything
} else
  // Set item
}

此外,您没有在条件语句的第一个分支(if/elseif块)中执行任何操作;要清除它,只需反转条件,交换分支,并删除else分支:

if (lS === null) { // Changed from `!== null` to `=== null`
  // Set item
}
// `else` block removed

另一项可选变更:如果需要,您可以将对null的比较更改为对lS的错误检查:if (lS === null)if (!lS)。* 在这种情况下 *,行为将相同(其他错误值为false0-00n""undefinedNaN)。
总而言之,代码的内容类似于我在下面列出的内容,我还将图片src的创建移到了条件语句中,这样Logo只在需要时创建,并立即将其字符串化。

function populateStorage() {
    var lS = localStorage.getItem("Logos");
    
    if (!lS) {
        var pictureSrc = JSON.stringify([
          new Logo({ "picSrcl": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTMzIiBoZWlna........48L3N2Zz4K" })
        ]);

        localStorage.setItem("Logos", pictureSrc);
    }
}

注意localStorage加载项目将 * 不会 * 创建Logo的示例:JSON不能存储这类东西。

goqiplq2

goqiplq22#

当您解析回存储在LocalStorage中的值(变量pictureSrc的值,它是包含一个对象的数组)时,它不会严格等于true -它不是布尔值。
仅使用lS替换lS === true

rhfm7lfc

rhfm7lfc3#

你的代码有几个问题。
1.你不需要JSON.parse(localStorage.getItem("Logos"));这一行,因为如果你得到null,它就会出错。

  1. lS === true是冗余的
    1.你可能想要的是这样的东西:
if (localStorage.getItem("Logos")) {
  // do something
} else {
  localStorage.setItem("Logos", JSON.stringify(pictureSrc))
}

相关问题