[我正在尝试在JavaScript中使用.push方法,但它出错了,我不明白为什么。
var sc = [];
localStorage.setItem("score_history", JSON.stringify(sc));
localStorage.setItem("perfect_score", 0);
function scoreinlocalstorage(perfect_score, winner_score, winner_name) {
var score_history = JSON.parse(localStorage.getItem("score_history"));
if (perfect_score < 10) {
var entry = JSON.parse('{ "name": ' + '"' + winner_name + '", "score": ' + winner_score + "}");
if (winner_score == 24) {
var new_score = ParseInt(perfect_score);
new_score += 1;
localStorage.setItem("perfect_score", new_score);
}
score_history.push(entry);
有什么想法吗?
编辑:我发现了错误。它与if语句if处理的方式有关。
enter code here
document.addEventListener("DOMContentLoaded", function(){
if(localStorage.getItem("perfect_score") == null ||
localStorage.getItem("score_history") == null){
var sc = [];
localStorage.setItem("score_history",JSON.stringify(sc));
localStorage.setItem("perfect_score",0);
}....
enter code here
var s=[];
localStorage.setItem("score_history",JSON.stringify(s));
var score_history = JSON.parse(localStorage.getItem("score_history"));
var perfect_score = localStorage.getItem("perfect_score");
if(perfect_score < 10){
var entry = JSON.parse('{ "name": '+'"'+winner_name+'", "score": '+winner_score+"}");
if(winner_score == 24){
var new_score = parseInt(perfect_score);
new_score += 1;
localStorage.setItem("perfect_score", new_score);
}
score_history.push(entry);
[以前,查看日志时,score_history将返回一个字符串,但是现在它只返回了正确的'[]'。所以现在我的问题是,为什么我的程序不喜欢if语句中的处理方式?
根据我对您的错误的了解,变量score_history
不是数组。可能是null
或undefined
。您可以使用or
(||
)运算符来验证变量是否为null:
var score_history = JSON.parse(localStorage.getItem("score_history")) || [];
此代码将检查JSON.parse(localStorage.getItem("score_history"))
的值是否为null,如果是,则将变量score_history
初始化为空数组。