意外的令牌:你的JSON.parse()问题

ben*_*ier 18 javascript json token angularjs

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

在此输入图像描述 查看大

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

 $scope.fav = []; 

if ($scope.fav !== 'undefined') {
   $scope.fav = JSON.parse(localStorage["fav"]);
}
Run Code Online (Sandbox Code Playgroud)

t.n*_*ese 20

根据您更新的问题,if条件没有意义,因为您之前设置$scope.fav[]正确,所以它永远不会"undefined".

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

if (typeof localStorage["fav"] !== "undefined") {
  $scope.fav = JSON.parse(localStorage["fav"]);
}
Run Code Online (Sandbox Code Playgroud)

由于我不知道是否存在localStorage["fav"]可能包含字符串的情况,"undefined"您可能还需要对此进行测试.

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


ave*_*isk 12

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

$scope.fav = JSON.parse(localStorage["fav"] || '[]');
Run Code Online (Sandbox Code Playgroud)

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

试试这个,你会自己理解:

var a = undefined;
JSON.parse(a);
Run Code Online (Sandbox Code Playgroud)


Dav*_*ard 5

Unexpected token: u几乎总是源于试图解析的值undefined

您可以像这样防止这种情况:

if (localStorage['fav']) {
  $scope.fav = JSON.parse(localStorage['fav'];
}
Run Code Online (Sandbox Code Playgroud)