为什么要在对象数组上推出函数错误?

问题描述 投票:-3回答:1

[enter image description here我正在尝试在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语句中的处理方式?

javascript arrays json
1个回答
0
投票

根据我对您的错误的了解,变量score_history不是数组。可能是nullundefined。您可以使用or||)运算符来验证变量是否为null:

var score_history = JSON.parse(localStorage.getItem("score_history")) || [];

此代码将检查JSON.parse(localStorage.getItem("score_history"))的值是否为null,如果是,则将变量score_history初始化为空数组。

© www.soinside.com 2019 - 2024. All rights reserved.