2016-04-13 4 views
1

Ich kann nicht den folgenden Code, um etwas anderes als undefined zu sagen. Was mache ich nicht richtig? Ich bin mir nicht sicher, wie die Score-Funktion funktioniert. Bis jetzt habe ich nur Vanille function doSomething() {} Methoden geschrieben. Vielen Dank.Neuling versucht, localStorage zur Arbeit zu bekommen

var score = score || {}; 

score = { 
    saveHighScore: function(tally) { 
    var high_score = localStorage.high_score; 
    if (typeof high_score == 'number') { 
     if (tally > high_score) { 
     localStorage.high_score = tally; 
     } 
    } else { 
     localStorage.high_score = tally; 
    } 
    }, 
    getHighScore: function() { 
    var high_score = localStorage.high_score; 
    if(typeof high_score !== 'number') { 
     high_score = 0; 
     localStorage.high_score = high_score; 
    } 
    return high_score; 
    } 
} 

window.console.log("Score: ", score.getHighScore()); 
+0

'window.localStorage'? – OrangeDog

+0

scheint es zu funktionieren https://jsfiddle.net/2t6ngjvw/ – maioman

+0

Der obige Code gibt nicht undefined – nikhil

Antwort

1

Ihr Problem ist die lokale Speicherung speichert Werte als String-Schlüssel/Wert-Paare, so dass Sie parseInt brauchen: -

var score = score || {}; 

score = { 
    saveHighScore: function(tally) { 
    var high_score = localStorage.high_score; 
    if (typeof high_score == 'number') { 
     if (tally > high_score) { 
     localStorage.high_score = tally; 
     } 
    } else { 
     localStorage.high_score = tally; 
    } 
    }, 
    getHighScore: function() { 
    var high_score = parseInt(localStorage.high_score); 
    if(typeof high_score !== 'number') { 
     high_score = 0; 
     localStorage.high_score = high_score; 
    } 
    return high_score; 
    } 
} 

score.saveHighScore(100) 

window.console.log("Score: ", score.getHighScore()); 

Ich habe keine Ahnung, warum, aber ich nachgeladen die gleiche Code oben geschrieben und es gibt Punktzahl: 0 in der Konsole.

Der Grund, es ist 0 Rückkehr ist innerhalb getHighScore er den Wert aus dem lokalen Speicher abruft und vergleicht, ob es nicht eine Nummer zu sehen, dann, wenn es nicht Sie es 0 setzen ist. Da der lokale Speicher alle Werte als Zeichenfolge speichert, wird der Wert immer auf 0 gesetzt.

Ich bin nicht sicher, wie die Score-Funktion arbeitet, entweder

das sind nur Funktionen innerhalb eines Objekts.