当我输入这一行时,我正在使用 Chrome 13 中的开发人员工具:
var location = "Hello";
按下回车后,页面发生了变化,并给了我一个 404 错误。地址栏现在已Hello
附加到最后一个地址。
我发誓我过去在 Chrome 中输入了完全相同的行,并且没有遇到同样的问题。我以为位置在window.location
。
有什么变化,还是我以前从未注意到这一点?
当我输入这一行时,我正在使用 Chrome 13 中的开发人员工具:
var location = "Hello";
按下回车后,页面发生了变化,并给了我一个 404 错误。地址栏现在已Hello
附加到最后一个地址。
我发誓我过去在 Chrome 中输入了完全相同的行,并且没有遇到同样的问题。我以为位置在window.location
。
有什么变化,还是我以前从未注意到这一点?
Chrome 可能已更改其范围规则。我不清楚var
控制台上是否应该被视为窗口范围或一些神秘的控制台范围。
如果您想创建一个名为 location 的变量,您应该创建一个安全范围,例如通过使用立即函数。例如
(function(){
var location = "hello"; // safe
})();
开发人员工具中的上下文是window
. 键入this
并查看内容。大概是吧window
。
因此,当您键入:
var location = "Hello";
您正在尝试重新定义已存在的全局范围内的变量。浏览器中的全局范围是window
对象。因此,location
在全局范围内与window.location
.
试图重新定义一个已经存在的对象(通过使用var
)不是 javascript 中的错误。它只是忽略var
声明并进行分配。并且,将字符串分配给位置对象,转到一个新的网页。