Неожиданный токен: u проблема с JSON.parse()
Я читал онлайн, что неожиданная проблема с токеном u может исходить из использования JSON.parse(). На моем iPhone 5 нет проблем, но на моем Nexus 7 я получаю эту последовательность ошибок:
Просмотр больших
Я понимаю, что это дубликат, но я не уверен, как решить эту проблему по моей конкретной проблеме. Здесь я реализую JSON.parse()
$scope.fav = [];
if ($scope.fav !== 'undefined') {
$scope.fav = JSON.parse(localStorage["fav"]);
}
Ответы
Ответ 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)
.
Остальные и обычно возникающие проблемы были лучше объяснены вышеприведенными ответами.