所以我使用JSON.parse
- 方法从cookie中检索特定数据。但是,如果cookie值不存在,则输入结束。无论如何都要在尝试解析之前验证这些数据是否存在?
actual cookie data : "foo1":"1123","foo2":"332","foo3":"773"
//function to retrieve cookie
function getCookie(name) {
var re = new RegExp(name + "=([^;]+)");
var value = re.exec(document.cookie);
return (value !== null) ? unescape(value[1]) : null;
}
var cookie = getCookie("cookiename");
var cookieData = JSON.parse(cookie).foo4;
上面的代码会给出错误意外的输入结束并终止程序。
答案 0 :(得分:1)
你可以做两件事,它们可以很好地协同工作:
如果cookie
空白,请使用默认
使用解析周围的错误处理
E.g:
var cookieData = null;
var foo4;
try {
cookieData = JSON.parse(cookie || "null");
}
catch (e) {
}
foo4 = cookieData ? cookieData.foo4 : /*appropriate default here*/;
或者,如果你想要默认cookieData
,但它没有foo4
或foo4
是任何虚假值(null
,undefined
,0
,""
,NaN
或false
),最后一行是:
foo4 = cookieData && cookieData.foo4 || /*appropriate default here*/;
如果&&
的值使用JavaScript's curiously-powerful ||
operator(及其功能相似的"null"
运算符),则使用cookie
而不是cookie
是 falsey 。但是还使用错误处理,以防cookie完全无意义。
答案 1 :(得分:0)
我想您可能会问如何检查cookie是否存在,在这种情况下这应该对您有帮助 -
https://stackoverflow.com/a/5968306/2198713
如果它不为null,那么你可以继续尝试解析它。
为了确保它没问题,你可以将你的解析包装在try块中并捕获一个' SyntaxError'例外 - https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse