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