意外令牌:UJSON.parse()问题如何解决?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (19)

我在网上读到,意外的令牌问题可以来自使用JSON.parse()。在我的iPhone 5上没有问题,但是在我的Nexus 7上,我收到了这样一连串的错误:

查看大图

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

 $scope.fav = []; 

if ($scope.fav !== 'undefined') {
   $scope.fav = JSON.parse(localStorage["fav"]);
}
提问于
用户回答回答于

if条件没有意义,因为之前设置$scope.fav[]正确,因此永远不会"undefined"

很可能你想要这样做你的测试:

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"]);
}
用户回答回答于

避免错误的一种方法(没有真正修复它,但至少不会中断):

$scope.fav = JSON.parse(localStorage["fav"] || '[]');

你得到的是错误的,因为localStorage["fav"]undefined

试试这个,你会明白你自己:

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

扫码关注云+社区