【发布时间】:2011-10-11 03:22:02
【问题描述】:
如果我通过进入控制台并输入 document.cookie; 让 Chrome 向我显示 document.cookie,它会给我说:
"name=John; gender=male";
但是如果我输入,比如说,document.cookie = 5;,它所做的只是将5; 添加到字符串的开头,所以我得到:
"5; name=John; gender=male";
如果我尝试document.cookie = null;,那么它甚至什么都不做。
这怎么可能?这是一个变量,不是吗?那么为什么赋值运算符没有按应有的方式工作呢?它实际上只是一点语法糖而不是真正的变量吗?如果是这样,糖到底掩盖了什么?
【问题讨论】:
-
顺便说一句,我不知道这个问题的答案,但是许多语言允许运算符(包括在某些情况下的赋值,很奇怪)被自定义行为覆盖。这非常有用,但也可能导致混乱,例如您在此处的内容。
-
@Matthew:JavaScript 不是其中之一,除了宿主对象(如
document)几乎可以做任何他们想做的事情,因为它们不是原生对象。
标签: javascript debugging google-chrome javascript-debugger