无法理解JavaScript代码

时间:2012-02-14 07:36:52

标签: javascript html cookies

我正在学习用JavaScript创建cookie,我在理解最后3行代码的工作时遇到了问题。我知道这个问题不适合Stackoverflow Standand,但如果有人解释,我将不胜感激。

function setCookie(c_name,value,exdays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value=escape(value) + ((exdays==null) ? "" : "; 
expires="+exdate.toUTCString()); 
document.cookie=c_name + "=" + c_value;
}

2 个答案:

答案 0 :(得分:4)

如果exdays不为null,即它作为参数给出(在JavaScript中,函数可以使用任意数量的参数),使用三元检查(if / else简写)它会追加字符串“expires = ...”到cookie字符串。否则,没有过期字符串(它将是会话cookie)。

最后,修改了document.cookie。有关cookie和通过JS更改的更多信息,请参阅www.quirksmode.org/js/cookies.html

基本上,要使用JS添加新cookie,请设置document.cookie =“key = value”。其他cookie不会被覆盖,只需附加新的cookie。

要删除其他Cookie,需要设置过去的过期日期,浏览器会将其清除。

如果你只是打印document.cookie,你会看到所有的cookie(技术上并非全部,只有http-only cookies等),但是没有办法从JavaScript学习它们的到期日期。

答案 1 :(得分:0)


ustun说得好,如果您了解编写和检索cookie的一般格式,那么您可以成为其中的主人。它就像处理字符串和数组一样简单。
Cookie是存储小尺寸不常用内容的非常有用的组件。通常,它用于将少量数据(如当前用户名,或用户唯一ID& so)从一个页面传输到另一个页面,或者与服务器进行通信以进行特定操作。

设置Cookie 设置cookie通常很容易。它只需要三个部分的定义。它们是,  

  • 要存储的数据  
  • Cookie的过期日期(可选),  
  • 您的Cookie域(可选)。

    有关这些参数的更多详细信息可以here
    实施例 document.cookie = "name = test ; expires = date ; path =/"

    检索cookie值正如我所说,它非常简单,就像处理数组字符串一样。上例中的分号(;)将作为我们存储的cookie的分隔符 实施例var myCookie = document.cookie.split(';'); for(var i=0;i < myCookie.length;i++) { var cookieValue = myCookie[i]; var pair = myCookie[i].split('=');var key = pair[0];var value= pair[1]; }

    限制即使使用起来非常方便,但它们并不是一种正常的沟通或机制。请注意,Web浏览器不需要总共保存300多个cookie,每个Web服务器不超过20个cookie(对于整个服务器,不仅仅是服务器上的页面或站点),也不需要保留超过4 KB的数据每个cookie(名称和值都计入此4千字节限制)。其中最大的限制是每个服务器限制20个cookie,因此为每个必须保存的变量使用不同的cookie不是一个好主意。而是保存包含大量信息的单个cookie。