Javascript 意外标记:u JSON.parse()问题

Javascript 意外标记:u JSON.parse()问题,javascript,json,angularjs,token,Javascript,Json,Angularjs,Token,我在网上看到,意外的令牌u问题可能来自于使用JSON.parse()。在我的iPhone 5上没有问题,但在我的Nexus 7上,我会出现以下一系列错误: 我意识到这是一个重复,但我不知道如何解决我的具体问题这一点。这里是我实现JSON.parse()的地方 一种避免错误的方法(不是真的修复它,但至少不会破坏它): 出现此错误是因为localStorage[“fav”]未定义 试试这个,你就会完全明白了: var a = undefined; JSON.parse(a); 意外标记:u几乎

我在网上看到,意外的令牌u问题可能来自于使用JSON.parse()。在我的iPhone 5上没有问题,但在我的Nexus 7上,我会出现以下一系列错误:

我意识到这是一个重复,但我不知道如何解决我的具体问题这一点。这里是我实现JSON.parse()的地方


一种避免错误的方法(不是真的修复它,但至少不会破坏它):

出现此错误是因为
localStorage[“fav”]
未定义

试试这个,你就会完全明白了:

var a = undefined;
JSON.parse(a);

意外标记:u
几乎总是源于试图解析
未定义的值

你可以像这样预防:

if (localStorage['fav']) {
  $scope.fav = JSON.parse(localStorage['fav'];
}

根据您更新的问题,
如果
条件没有意义,因为您之前将
$scope.fav
设置为
[]
,因此它永远不会是
“未定义的”

您很可能希望通过这种方式进行测试:

if (typeof localStorage["fav"] !== "undefined") {
  $scope.fav = JSON.parse(localStorage["fav"]);
}
我不知道是否存在
localStorage[“fav”]
可能包含字符串
“undefined”
的情况,您可能还需要对此进行测试

if (typeof localStorage["fav"] !== "undefined"
    && localStorage["fav"] !== "undefined") {
  $scope.fav = JSON.parse(localStorage["fav"]);
}

在我的例子中,问题是我得到的值是
localStorage.getItem[key]
,而它应该是
localStorage.getItem(key)


上面的回答已经更好地解释了其余的和通常面临的问题。

我想说,好的第一步应该是
console.log(localStorage[“fav”])
然后看看下一步会给你带来什么。你能显示
console.log(typeof localStorage[“fav”])的输出吗
console.log(typeof JSON.stringify($scope.fav))就在您的
JSON.parse之前。它不应该是
未定义的
,但可能是
本地存储
(例如,数据太大)或
JSON.stringify有问题。
意外标记u
表示它是
未定义的
addToFav函数仅在单击按钮时调用。这些按钮不会显示在Nexus上,但只显示在iPhone上。我应该在那里看到输出吗?由于Nexus上没有调用
addToFav
,那么错误很可能发生在另一个地方,您真的确定您发布的代码就是发生错误的代码吗?还是我误解了你的评论?如果没有错误,显示iPhone的输出就没有意义。@t.niese抱歉,问题发生的地方不对。我已经用设备加载时调用的代码更新了这个问题。现在回想起来,我认为主要问题是由JSON.parse(localStorage[“fav]”)引起的;没有任何价值,因为这是我第一次在这个Nexus上加载应用程序。在此之前,数据一直存储在iPhone上。我认为术语“undefined”在这里是不正确的,因为它是在前一行定义的。
if($scope.fav!=='undefined')
是无用的,因为对于给定的代码,
$scope.fav
从来都不是
“undefined”
。因此,要么删除它,只使用
localStorage[“fav”]| |{}
,要么将测试移动到
if
条件。好吧,我正在修改一行中断的代码,而不是他的整个代码:),但你是对的,我应该提供一个干净的代码作为示例。找零:)嗨,谢谢。这就是我一直在寻找的解决方案。我做这个测试只是为了确保如果fav中有以前的值,那么它们在每次加载时都会保持不变。检查typeof“undefined”和string“undefined”是我的解决方案。确定如何设置“未定义”是另一个错误:)谢谢t.niese!
if (typeof localStorage["fav"] !== "undefined") {
  $scope.fav = JSON.parse(localStorage["fav"]);
}
if (typeof localStorage["fav"] !== "undefined"
    && localStorage["fav"] !== "undefined") {
  $scope.fav = JSON.parse(localStorage["fav"]);
}