0

当我输入这一行时,我正在使用 Chrome 13 中的开发人员工具:

var location = "Hello";

按下回车后,页面发生了变化,并给了我一个 404 错误。地址栏现在已Hello附加到最后一个地址。

http://www.google.com/你好

我发誓我过去在 Chrome 中输入了完全相同的行,并且没有遇到同样的问题。我以为位置在window.location

有什么变化,还是我以前从未注意到这一点?

4

2 回答 2

2

Chrome 可能已更改其范围规则。我不清楚var控制台上是否应该被视为窗口范围或一些神秘的控制台范围。

如果您想创建一个名为 location 的变量,您应该创建一个安全范围,例如通过使用立即函数。例如

(function(){
  var location = "hello";  // safe
})();
于 2011-09-16T18:48:34.993 回答
2

开发人员工具中的上下文是window. 键入this并查看内容。大概是吧window

因此,当您键入:

var location = "Hello";

您正在尝试重新定义已存在的全局范围内的变量。浏览器中的全局范围是window对象。因此,location在全局范围内与window.location.

试图重新定义一个已经存在的对象(通过使用var)不是 javascript 中的错误。它只是忽略var声明并进行分配。并且,将字符串分配给位置对象,转到一个新的网页。

于 2011-09-16T18:56:05.080 回答