Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Chrome 13中全局定义的位置_Javascript_Google Chrome_Google Chrome Devtools_Window.location - Fatal编程技术网

Javascript 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的变量,则应创建一

我在Chrome 13中使用开发者工具时键入了以下行:

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上打开它,所有人都下了地狱。现在想想,这是非常明显的。我输入了这个,是的,事实上,它是窗口对象。我只是很惊讶我以前从未注意到这一点。现在想想,这是很明显的。我输入了这个,是的,事实上,它是窗口对象。我只是很惊讶我以前从未注意到这一点。