35

如果我document.cookie通过进入控制台并输入Chrome 来向我展示document.cookie;它会给我,说:

"name=John; gender=male";

但是,如果我输入,比如说,document.cookie = 5;它所做的只是添加5;到字符串的开头,所以我得到:

"5; name=John; gender=male";

如果我尝试document.cookie = null;那么它甚至不会做任何事情。

怎么会这样?这是一个变量,不是吗?那么为什么赋值运算符没有按应有的方式工作呢?它实际上只是一点语法糖而不是真正的变量吗?如果是这样,糖到底掩盖了什么?

4

3 回答 3

37

document.cookie非常特殊的行为。如您所见,分配给它会添加(或更新)一个 cookie(或多个 cookie),而不是替换所有 cookie。这是非常不寻常的。

在MDN上阅读所有相关信息。

于 2011-07-22T15:07:12.443 回答
6

为什么不看看MDN?

赋值运算符 to 右侧的字符串document.cookies应该是分号分隔的键值对列表,即document.cookie = "aKey=5"设置/更新aKeycookie。

所以是的,document.cookie表现出特殊的行为。

于 2011-07-22T15:06:15.273 回答
3

这是您的“问题”的示例。此外,它还说:

您可以通过简单地将其过期时间更新为零来删除 cookie。

于 2011-07-22T15:07:52.887 回答