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