当我尝试解析 localStorage['highscores"] 时抛出错误
if (localStorage["highscores"] == undefined) {
localStorage["highscores"] = [];
}
var highscores = JSON.parse(localStorage["highscores"]) || [];
我还没有定义 localStorage['highscores"] 所以我尝试检查它,如果它未定义,请定义它,如果它已满,我想将它的信息保存在 localStorage['highscores"] 中并添加更多信息.
有什么想法吗?
答案 0 :(得分:1)
本地存储可能只保存字符串。当你给它设置非字符串时,它会被强制为一个字符串。
当数组转换为字符串时,会在字符串上调用 .join(',')
。空数组将被转换为空字符串:
console.log(String([]) === '');
无法解析 JSON。
改为保存空数组的 JSON 字符串化版本。
if (localStorage.highscores === undefined) {
localStorage.highscores = '[]';
}
或
if (localStorage.highscores === undefined) {
localStorage.highscores = JSON.stringify([]);
}
如有疑问,请在与本地存储之间传输时始终使用 JSON.stringify
/JSON.parse
。