我不明白这段代码有什么错误

时间:2019-04-03 14:05:42

标签: javascript jquery

我不明白为什么Firefox在第31行中给我错误,说elencouser(我在代码顶部声明)为null,请帮忙,谢谢

var elencouser = [];
var array;

$(document).ready(function(){

    if (typeof(Storage) !== "undefined") {

        if(sessionStorage.getItem("arrayuser") == "undefined"){
            elencouser[0] = new utente("admin","admin","Danilo","Cerasi");
            array = JSON.stringify(elencouser);
            sessionStorage.setItem("arrayuser",array);
        }

        $("#registrati").click(function(){

            array = sessionStorage.getItem("arrayuser");
            elencouser = $.parseJSON(array);

            var email=$("#exampleInputEmail").val();        //prendo quello che ha scritto l'utente
            var password=$("#exampleInputPassword").val();
            var nome=$("#exampleFirstName").val();
            var cognome=$("#exampleLastName").val();

            elencouser.push( new utente(email,password,nome,cognome) );
            alert("sei appena stato registrato! Ora verrai reindirizzato alla pagina di login..");

            location.href="login.html";
        });

    }else{
        alert("riscontriamo problemi di apertura con il browser che stai utilizzando, aggiornalo oppure prova con uno doverso");    //se il browser non supporta il il session storage glielo dico
    }
});

1 个答案:

答案 0 :(得分:3)

未定义的检查应使用typeof来检查"undefined"

if(typeof sessionStorage.getItem("arrayuser") == "undefined"){

请注意,arrayuser可能由于各种原因(通过用户手动编辑或通过旧版代码)仍包含不同的数据。

因此,我总是假设从本地/会话存储中获取arrayuser时,您可能无法获得有效的数组。

在您的点击事件中,我还将检查arrayuser是否有效以及它是否为数组:

try {
    const arrayuser = sessionStorage.getItem("arrayuser");
    elencouser = JSON.parse(arrayuser);

    if(!Array.isArray(elencouser)) throw "arrayuser was not a valid array";
} catch(e) {
    console.error(e);
    elencouser = [];
}