定义我所用的开发工具在Chrome 13,当我输入这行:全球定位在Chrome 13
var location = "Hello";
按Enter,改变了页面,并给了我一个404错误。地址栏现在有Hello
追加到最后的地址。
我发誓,我输入了完全相同的线路了Chrome在过去,而不是有同样的问题。我认为位置在window.location
。
有什么改变,或者我以前从未注意到这一点?
定义我所用的开发工具在Chrome 13,当我输入这行:全球定位在Chrome 13
var location = "Hello";
按Enter,改变了页面,并给了我一个404错误。地址栏现在有Hello
追加到最后的地址。
我发誓,我输入了完全相同的线路了Chrome在过去,而不是有同样的问题。我认为位置在window.location
。
有什么改变,或者我以前从未注意到这一点?
开发人员工具中的上下文为window
是非常正常的。输入this
并查看说的是什么。这可能是window
。
因此,当你键入:
var location = "Hello";
您正在试图重新定义已经存在的全球范围内的变量。浏览器中的全局范围是window
对象。因此,全球范围内的location
与window.location
相同。
正在试图重新定义已经存在(通过使用var
)的对象不是在JavaScript错误。它只是忽略了var
声明并完成了一项任务。并且,将位置对象的字符串分配给新的网页。
Chrome可能已经更改了其范围规则。我不清楚在控制台上的var
应该被视为窗口范围还是某个神秘的控制台范围。
如果你想创建一个变量命名的位置,你应该使用一个立即函数创建一个安全的范围内,例如。例如。
(function(){
var location = "hello"; // safe
})();
现在想想看,这很明显。我在这里输入了,而事实上,它是窗口对象。我很惊讶,我以前从未注意到这一点。 – Jonathan