对不起,如果标题是某种误解。 如果我尝试使用json从localstorage解析值并且没有值,那么我在使用Web应用程序时遇到了一些问题。
例如:
如果你这样做:alert(localStorage.getItem("something"));
你得到null:http://jsfiddle.net/yrGht/
但是如果你这样做会阻止一切:alert(JSON.parse(localStorage["test"]));
你什么也得不到,它会阻止一切工作:http://jsfiddle.net/7tCaS/
我如何解决这个问题,以便我提醒第一个,如果它没有值,那么继续工作,因为基本上我想设置它:JSON.parse(localStorage["test"])
作为全局变量,但它会阻止其他所有内容:{{3} }
答案 0 :(得分:5)
试试这个:
alert(JSON.parse(localStorage['test'] || null));
失败的原因是JSON.parse(undefined_variable)
出现“无效字符”错误。如果localStorage['test']
不存在,则为undefined
,因此会出错。如果值为falsy,则上面的代码将null
置于原位undefined
。但是,如果值为0
,""
或其他假值,则会产生不良影响。如果需要更具体的代码,请尝试:
alert(JSON.parse(typeof localStorage['test'] == "undefined" ? null : localStorage['test']));
答案 1 :(得分:2)
使用localStorage时,您需要在编码中预测数据可能不在那里,您需要测试该条件并以某种方式处理它。最简单的方法是这样的:
var rawData = localStorage.getItem("something");
var parsedData = {}; // set whatever the default value should be if there is no localStorage value
if (rawData) {
parsedData = JSON.parse(rawData);
}
您还可以使用异常处理:
var parsedData;
try {
parsedData = JSON.parse(localStorage.getItem("something"));
} catch(e) {
parsedData = {}; // set default value if localStorage parsing failed
}
此外,您应该学习如何在浏览器错误控制台或调试器控制台中查看您的javascript错误。 Javascript没有被“阻止”。它抛出了一个未处理的错误,因此执行被中止。错误控制台和调试器控制台中都记录了该错误(行号和错误类型),供您查看。