我刚刚开始学习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);
}
答案 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,其中包含您正在寻找其名称的名称。