HTML5 网络存储整数变为 NaN

HTML5 web storage integer becomes NaN

谁能解释为什么最后一行结果为 NaN? 'userScore' 是一个 span 元素的对象,当我不实现 localStorage 部分时,类似的操作工作得很好。提前谢谢了!

    var score;
    score = 20 - (parseInt(turnNr.innerHTML) - bricks.length / 2) * 
    1.2;
    if (score >= 0.5) {
        score = Math.round(score);
    } else {
        score = 0;
    }

    if (localStorage.totalScore) {
       localStorage.totalScore = parseInt(localStorage.totalScore) + 
        score;
    } else {
        localStorage.totalScore = score;
    }
    userScore.innerHTML = localStorage.totalScore;

您的代码无法从错误中恢复。一旦将 "NaN" 存储在 localStorage 中,它就不会在代码执行时消失。那是因为 if (localStorage.totalScore) 将 运行 即使存在无效值。

您需要将代码更改为

if (parseInt(localStorage.totalScore)) { // NaN is falsy and will be ignored
   localStorage.totalScore = parseInt(localStorage.totalScore) + score;
} else {
    localStorage.totalScore = score;
}
userScore.innerHTML = localStorage.totalScore;