Chrome 13中全局定义的位置

时间:2011-09-16 18:46:04

标签: javascript google-chrome google-chrome-devtools window.location

当我输入以下内容时,我在Chrome 13中使用了开发者工具:

var location = "Hello";

按Enter键后,页面发生了变化,给出了404错误。地址栏现在已将Hello附加到最后一个地址。

http://www.google.com/Hello

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

有什么改变,或者我以前从未注意到这一点?

2 个答案:

答案 0 :(得分:2)

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

如果要创建名为location的变量,则应创建安全范围,例如使用立即函数。 E.g。

(function(){
  var location = "hello";  // safe
})();

答案 1 :(得分:2)

开发人员工具中的上下文window是完全正常的。输入this并查看说明的内容。它可能是window

因此,当您输入:

var location = "Hello";

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

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