Javascript 在全局作用域中分配“var location”会重定向到不存在的文件

Javascript 在全局作用域中分配“var location”会重定向到不存在的文件,javascript,window.location,Javascript,Window.location,我有一个HTML文件test.HTML,其中有两个变量,都命名为location,一个是全局变量,一个是局部变量。但当我在浏览器中打开它时,它只是说找不到您的文件,地址栏显示file://Los%20Angeles 而不是file://test.html 正如所料。为什么? <html> <body> <script type="text/javascript"> var location = "Los Angeles" function showLocati

我有一个HTML文件test.HTML,其中有两个变量,都命名为location,一个是全局变量,一个是局部变量。但当我在浏览器中打开它时,它只是说找不到您的文件,地址栏显示file://Los%20Angeles 而不是file://test.html 正如所料。为什么?

<html>
<body>
<script type="text/javascript">
var location = "Los Angeles"
function showLocation() {
    var location = "San Francisco"
    document.write(location)
}
</script>
<input type="button" onclick="showLocation()" value="Show Location"/>
</body>
</html>

“location”是javascript中的保留关键字。只需将变量名更改为其他名称。
有关保留字的更多信息:

'location'是javascript中的保留关键字。只需将变量名更改为其他名称。 有关保留字的详细信息:

设置全局位置会导致浏览器转到该url。它不是保留字-它是在窗口对象上定义的变量。下面是一个更好的保留字列表:

在您的示例中,您将全局位置设置为“Los Angeles”,这将导致窗口导航到该位置,就像它是一个相对URL一样

设置旧金山函数中的var位置=对窗口对象没有影响,因为函数变量有自己的作用域。 所以你可以这样做:

function showLocation() {
    var location = "San Francisco"
    document.write(location)
}
它将按预期工作。它将把字符串“San Francisco”写入文档

如果您使用的是现代浏览器,您可以通过尝试使用“let”设置“location”来查看发生了什么:

let location = "los angeles"
现在,您将看到一个错误,该错误显示如下内容:

SyntaxError:无法创建覆盖全局属性“location”的重复变量

设置全局位置会使浏览器转到该url。它不是保留字-它是在窗口对象上定义的变量。下面是一个更好的保留字列表:

在您的示例中,您将全局位置设置为“Los Angeles”,这将导致窗口导航到该位置,就像它是一个相对URL一样

设置旧金山函数中的var位置=对窗口对象没有影响,因为函数变量有自己的作用域。 所以你可以这样做:

function showLocation() {
    var location = "San Francisco"
    document.write(location)
}
它将按预期工作。它将把字符串“San Francisco”写入文档

如果您使用的是现代浏览器,您可以通过尝试使用“let”设置“location”来查看发生了什么:

let location = "los angeles"
现在,您将看到一个错误,该错误显示如下内容:

SyntaxError:无法创建覆盖全局属性“location”的重复变量


另外,如果您的目标是修改值,那么您已经在作用域全局变量之外声明了一个变量,您所要做的就是在函数内部调用该变量,并为其分配一个新值,无需再次声明。@jhek谢谢。我只是想测试使用相同名称声明全局变量和局部变量的结果。谢谢!我从来没有想过保留关键字:另外,由于您已在作用域全局变量之外声明了一个变量,如果您的目标是修改该值,则只需在函数内部调用该变量并为其分配一个新值,无需再次声明。@jhek谢谢。我只是想测试使用相同名称声明全局变量和局部变量的结果。谢谢!我从未想过保留关键字:该链接现在重定向到一篇无关的MDN文章。它仍然可以通过查看,但这个问题仍然与保留字完全无关。我已经写了一个相关的问题,它提供了行为类似的变量的完整列表。描述这些变量并不容易,但它基本上是不可配置的Window.prototype和其他带有setter的属性。该链接现在重定向到一篇无关的MDN文章。它仍然可以通过查看,但这个问题仍然与保留字完全无关。我已经写了一个相关的问题,它提供了行为类似的变量的完整列表。描述这些变量并不容易,但它基本上是不可配置的Window.prototype和其他带有setter的属性。