javascript - syntaxerror - unexpected token in json at position 0
Un token inesperado: u JSON.parse() problema (4)
Base en su pregunta actualizada la condición if no tiene sentido, ya que estableció $scope.fav en [] justo antes, por lo que nunca puede estar "undefined" .
Lo más probable es que quieras tener tu prueba de esa manera:
if (typeof localStorage["fav"] !== "undefined") {
$scope.fav = JSON.parse(localStorage["fav"]);
}
Como no sé si hay una situación en la que localStorage["fav"] pueda contener la cadena "undefined" es probable que también necesite una prueba para esto.
if (typeof localStorage["fav"] !== "undefined"
&& localStorage["fav"] !== "undefined") {
$scope.fav = JSON.parse(localStorage["fav"]);
}
He leído en línea que el problema inesperado del token u puede provenir del uso de JSON.parse (). En mi iPhone 5 no hay problema, pero en mi Nexus 7 obtengo esta secuencia de errores:
Me doy cuenta de que esto es un duplicado, pero no estoy seguro de cómo resolverlo para mi problema específico. Aquí es donde implemento JSON.parse ()
$scope.fav = [];
if ($scope.fav !== ''undefined'') {
$scope.fav = JSON.parse(localStorage["fav"]);
}
En mi caso, el problema era que localStorage.getItem[key] el valor como localStorage.getItem[key] mientras que debería haber sido localStorage.getItem(key) .
El resto y los problemas que normalmente se enfrentan se explican mejor en las respuestas anteriores.
Una forma de evitar el error (no corregirlo realmente, pero al menos no se romperá):
$scope.fav = JSON.parse(localStorage["fav"] || ''[]'');
localStorage["fav"] ese error porque localStorage["fav"] undefined está undefined .
Prueba esto y entenderás todo por ti mismo:
var a = undefined;
JSON.parse(a);
Unexpected token: u casi siempre se deriva de intentar analizar un valor que undefined está undefined .
Puedes protegerte de eso así:
if (localStorage[''fav'']) {
$scope.fav = JSON.parse(localStorage[''fav''];
}