Javascript &引用;“未定义”;在LocalStorage中的实际值之前

Javascript &引用;“未定义”;在LocalStorage中的实际值之前,javascript,local-storage,undefined,Javascript,Local Storage,Undefined,这是我使用的代码: localStorage["FSS"] += JSON.stringify(favSongs); localStorage["FSTS"] += JSON.stringify(favSongTitle); localStorage["FIS"] += JSON.stringify(favImages); 但当我检索这些值时,我得到了以下结果: 对于FSS:未定义[“0t0FGyhB6C8”] 对于FSTS:未定义[“SONIC辛迪加-拒绝(官方音乐视频)] 对于FIS:未定

这是我使用的代码:

localStorage["FSS"] += JSON.stringify(favSongs);
localStorage["FSTS"] += JSON.stringify(favSongTitle);
localStorage["FIS"] += JSON.stringify(favImages);
但当我检索这些值时,我得到了以下结果:

对于
FSS
未定义[“0t0FGyhB6C8”]

对于
FSTS
未定义[“SONIC辛迪加-拒绝(官方音乐视频)]

对于
FIS
未定义[“https://i.ytimg.com/vi/0t0FGyhB6C8/mqdefault.jpg“]


我不明白
undefined
的来源和位置,以及我如何将其删除以在屏幕上记录结果(现在当我记录时,它也会显示
undefined

未定义的
undefined
localStorage
中已经存在的内容:

document.getElementById('existing').textContent = localStorage[Math.random().toString()];
由于使用
foo+=bar
语法,脚本将:

  • 获取
    foo的现有值
  • 执行类型强制以使
    foo
    bar
    兼容
  • 附加到现有值
  • 将组合值分配回
    foo
  • 如果
    foo
    已包含
    未定义的

    这似乎是通过映射访问器访问
    localStorage
    属性的产物。如果使用,您将收到
    null
    ,而不是
    undefined

    因为您使用的是JSON,所以即使您已经有了一个值,简单的字符串连接(string
    +=
    )也无法工作。您将得到无效的
    ['foo-album']['bar-album']
    。我建议获取现有项或空数组,附加新项,然后替换存储值:

    var prev = localStorage.getItem('FSS') || '[]'; // get the existing value or the string representing an empty array
    var data = JSON.parse(prev); // parse into an object
    data.push('New Album');
    localStorage.setItem('FSS', JSON.stringify(data)); // convert back to JSON and set
    

    未定义的
    localStorage
    中已经存在的内容:

    document.getElementById('existing').textContent = localStorage[Math.random().toString()];
    
    由于使用
    foo+=bar
    语法,脚本将:

  • 获取
    foo的现有值
  • 执行类型强制以使
    foo
    bar
    兼容
  • 附加到现有值
  • 将组合值分配回
    foo
  • 如果
    foo
    已包含
    未定义的

    这似乎是通过映射访问器访问
    localStorage
    属性的产物。如果使用,您将收到
    null
    ,而不是
    undefined

    因为您使用的是JSON,所以即使您已经有了一个值,简单的字符串连接(string
    +=
    )也无法工作。您将得到无效的
    ['foo-album']['bar-album']
    。我建议获取现有项或空数组,附加新项,然后替换存储值:

    var prev = localStorage.getItem('FSS') || '[]'; // get the existing value or the string representing an empty array
    var data = JSON.parse(prev); // parse into an object
    data.push('New Album');
    localStorage.setItem('FSS', JSON.stringify(data)); // convert back to JSON and set
    

    谢谢你的评论。但当我尝试时,它只得到第一个,然后再也不会添加一个。我需要/想要将10项添加到一个列表/数组中,以便稍后检索。我该怎么做?谢谢你的评论。但当我尝试时,它只得到第一个,然后再也不会添加一个。我需要/想要将10项添加到一个列表/数组中,以便稍后检索。我该怎么做?