Javascript LocalStorage Null Bug

时间:2017-03-04 18:06:33

标签: javascript null local-storage

我在这样的localstorage中保存元素(使用严格模式):

localStorage.setItem(String(index), JSON.stringify([name, score]));

然后我写了一个方法来检查新分数是否大于保存的分数:

    // Returns index where to place the score and return -1 if no new highscore
    function isHighScore(score) {
    console.log("called");
    for (var i = 0; i < 3; i++) {
        if (localStorage.getItem(String(i)) == null) {
            return i; // No highscore yet at this position => new Highscore
        }
        else{
            var indexObject = JSON.parse(localStorage.getItem(String(i)));
            console.log(indexObject);
            if(indexObject[1] < score){ // Checking if new score is higher than currently at this index
                return i; // Returning index if new highscore
            }
        }
    }
    return -1; // checked all entries no new highscore
}

但我得到以下输出(在保存示例后使用name =&#34; name&#34; and score = 0):

  

称为

     

[&#34; name&#34;,0]

     

     

未捕获的TypeError:无法读取null

的属性1

这怎么可能发生?我已经检查过该值是否为null,那么如果检查localStorage.getItem(String(i)) == null),该如何通过第一个?

1 个答案:

答案 0 :(得分:5)

我怀疑如果您使用浏览器的devtools来查看本地存储中的内容,您会找到值为"1"的{​​{1}}条目。

这解释了症状,因为

"null"
如果if (localStorage.getItem(String(i)) == null) { 返回false,则

... localStorage.getItem(String(i)),然后

"null"

...会将var indexObject = JSON.parse(localStorage.getItem(String(i))); 设置为indexObject