Подтвердить что ты не робот

Неожиданный токен: u проблема с JSON.parse()

Я читал онлайн, что неожиданная проблема с токеном u может исходить из использования JSON.parse(). На моем iPhone 5 нет проблем, но на моем Nexus 7 я получаю эту последовательность ошибок:

enter image description hereПросмотр больших

Я понимаю, что это дубликат, но я не уверен, как решить эту проблему по моей конкретной проблеме. Здесь я реализую JSON.parse()

 $scope.fav = []; 

if ($scope.fav !== 'undefined') {
   $scope.fav = JSON.parse(localStorage["fav"]);
}
4b9b3361

Ответ 1

Основываясь на вашем обновленном вопросе, условие 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"]);
}

Ответ 2

Один из способов избежать ошибки (на самом деле не исправлять ее, но по крайней мере не сломать):

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

Вы получаете эту ошибку, потому что localStorage["fav"] - undefined.

Попробуйте это, и вы все поймете сами:

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

Ответ 3

Unexpected token: u почти всегда проистекает из попытки разобрать значение undefined.

Вы можете защититься от этого:

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

Ответ 4

В моем случае проблема заключалась в том, что я получал значение localStorage.getItem[key], тогда как оно должно быть localStorage.getItem(key).

Остальные и обычно возникающие проблемы были лучше объяснены вышеприведенными ответами.