你能解释一下Javascript cookie教程的这行代码吗?

时间:2016-03-01 01:12:09

标签: javascript function cookies

我刚刚开始学习javascript,而在阅读Cookie教程时,有一部分我根本不懂。你们能详细解释一下吗?提前谢谢!

下面是整个剧本,但唯一令我困惑的部分是readCookie(name)功能。第一行var nameEQ = name + "=";我不明白为什么我们必须在字符串末尾加上等号。

function createCookie(name,value,days) {
        if (days) {
            var date = new Date();
            date.setTime(date.getTime()+(days*24*60*60*1000));
            var expires = "; expires="+date.toGMTString();
        }
        else var expires = "";
        document.cookie = name+"="+value+expires+"; path=/";
    }

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name,"",-1);
}

2 个答案:

答案 0 :(得分:2)

乍一看:

在这一行:if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);

它正在寻找"name=",如果它发现它将其从字符串中删除。它附加=以确保它从字符串c中删除整个部分。

示例:说c = name=SomeCookieName,在该行代码之后,您将留下SomeCookieName

答案 1 :(得分:1)

还有更多细节here (MDN),但简要介绍......

cookie至少是一个字符串,由cookie的名称(等号前的部分)和cookie的值(等号后的部分)组成。所以,等号只是名称和值之间的分隔符。这样,cookie可以存储为字符串,但包含多个部分。

由于该功能正在搜索所有cookie,因此您需要使用名称加上等号来查找正确的值。如果没有等号,您可能会得到错误的cookie,其中包含您正在寻找其名称的名称。