Javascript Chrome 13中全局定义的位置
我在Chrome 13中使用开发者工具时键入了以下行:Javascript Chrome 13中全局定义的位置,javascript,google-chrome,google-chrome-devtools,window.location,Javascript,Google Chrome,Google Chrome Devtools,Window.location,我在Chrome 13中使用开发者工具时键入了以下行: var location = "Hello"; 按enter键后,页面发生变化,并给我一个404错误。地址栏现在在最后一个地址后追加了Hello 我发誓我以前在Chrome中输入了完全相同的行,没有同样的问题。我以为地点在窗口。地点 有什么改变了吗,或者我以前从来没有注意到这一点?Chrome可能已经改变了它的范围规则。我不清楚控制台上的var应被视为窗口作用域还是某种神秘的控制台作用域 如果要创建名为location的变量,则应创建一
var location = "Hello";
按enter键后,页面发生变化,并给我一个404错误。地址栏现在在最后一个地址后追加了Hello
我发誓我以前在Chrome中输入了完全相同的行,没有同样的问题。我以为地点在窗口。地点
有什么改变了吗,或者我以前从来没有注意到这一点?Chrome可能已经改变了它的范围规则。我不清楚控制台上的var
应被视为窗口作用域还是某种神秘的控制台作用域
如果要创建名为location的变量,则应创建一个安全范围,例如通过使用immediate函数。例如
(function(){
var location = "hello"; // safe
})();
Chrome可能已经改变了其范围规则。我不清楚控制台上的var
应被视为窗口作用域还是某种神秘的控制台作用域
如果要创建名为location的变量,则应创建一个安全范围,例如通过使用immediate函数。例如
(function(){
var location = "hello"; // safe
})();
开发人员工具中的上下文是window
,这是非常正常的。键入此
并查看所述内容。它可能是窗口
因此,键入时:
var location = "Hello";
您正在尝试重新定义全局范围中已存在的变量。浏览器中的全局范围是窗口
对象。因此,全局范围中的location
与window.location
相同
尝试重新定义已经存在的对象(通过使用var
)在javascript中不是错误。它只是忽略var
声明并执行赋值。并且,将一个字符串分配给location对象,将转到一个新的网页。开发人员工具中的上下文将是窗口
,这是非常正常的。键入此
并查看所述内容。它可能是窗口
因此,键入时:
var location = "Hello";
您正在尝试重新定义全局范围中已存在的变量。浏览器中的全局范围是窗口
对象。因此,全局范围中的location
与window.location
相同
尝试重新定义已经存在的对象(通过使用var
)在javascript中不是错误。它只是忽略var
声明并执行赋值。然后,将一个字符串分配给location对象,转到一个新的网页。它将在全局范围内执行,并且location
已经存在于此。因此,它将覆盖位置
,这将导致导航。就像var foo=123
将导致window.foo==123
。谢谢@pimwdb,我也这么认为。我不记得13是否是这样工作的,因为我一直都在使用chromium latest:“是的,我完全同意包装代码是一种方式。事实证明jfriend00是正确的,开发工具的上下文是window。是的,一般来说,window是chrome的默认范围。我有一个关于我们内部系统的旧页面,它在一个脚本块中创建了全局变量(其中一个称为位置),在IE中运行了多年。在Chrome中打开它,所有人都下了地狱。它将在全局范围内执行,location
已经存在于此。因此,它将覆盖位置
,这将导致导航。就像var foo=123
将导致window.foo==123
。谢谢@pimwdb,我也这么认为。我不记得13是否是这样工作的,因为我一直都在使用chromium latest:“是的,我完全同意包装代码是一种方式。事实证明jfriend00是正确的,开发工具的上下文是window。是的,一般来说,window是chrome的默认范围。我有一个关于我们内部系统的旧页面,它在一个脚本块中创建了全局变量(其中一个称为位置),在IE中运行了多年。在Chrome上打开它,所有人都下了地狱。现在想想,这是非常明显的。我输入了这个,是的,事实上,它是窗口对象。我只是很惊讶我以前从未注意到这一点。现在想想,这是很明显的。我输入了这个,是的,事实上,它是窗口对象。我只是很惊讶我以前从未注意到这一点。