我有一个HTML文件test.html
,其中我有两个名为location
的变量,一个全局变量和一个本地变量。但是,当我在浏览器中打开它时,它只是显示Your file was not found
,地址栏显示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>
答案 0 :(得分:2)
&#39;位置&#39;是javascript中的保留关键字。只需将变量名称更改为其他名称即可。 有关保留字的更多信息:https://www.w3schools.com/js/js_reserved.asp
答案 1 :(得分:2)
设置全局location
会导致浏览器转到该网址。它不是保留字 - 它是在窗口对象上定义的变量。这是一个更好的保留字列表:
https://docs.microsoft.com/en-us/scripting/javascript/reference/javascript-reserved-words
在您的示例中,您将全局location
设置为“洛杉矶”,这会导致窗口导航到该窗口,就像它是相对URL一样。
在函数内设置var location = "San Francisco"
对窗口对象没有影响,因为函数变量有自己的作用域。
所以你可以这样做:
function showLocation() {
var location = "San Francisco"
document.write(location)
}
它将按预期工作。它会将字符串'San Francisco'写入文档。
如果您使用的是现代浏览器,可以尝试使用'let'设置'location'来查看正在发生的事情:
let location = "los angeles"
现在您将收到类似以下内容的错误:
SyntaxError:无法创建隐藏全局属性的重复变量:'location'