Javascript未正确解析,导致加载时URL发生更改

Javascript未正确解析,导致加载时URL发生更改,javascript,Javascript,因此,我有以下代码,作为freecodecamp.com当前天气项目的一部分创建 <html><head> <!--Bootstrap CDN - 3.3.7 Complete CSS--> <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BVYiiSIFeK1dGmJ

因此,我有以下代码,作为freecodecamp.com当前天气项目的一部分创建

<html><head>
<!--Bootstrap CDN - 3.3.7 Complete CSS-->
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

<!--jQuery CDN - 3.2.1 Uncompressed-->
<script
  src="https://code.jquery.com/jquery-3.2.1.js"
  integrity="sha256-DZAnKJ/6XZ9si04Hgrsxu/8s717jcIzLy3oi35EouyE="
  crossorigin="anonymous"></script>

<meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="UTF-8">
<title>Weather by Current Location</title>

<style>
  body{
    background-color: #141b28;  //Purple
  }
  #weather-box{
    margin-top: 5%;
    color: #C0C0C0;  //Silver
  }
</style>
<script>
  //var location = [1,2];
  function getLocation(){
  }
</script>

</head>
<body>
<div class="row">
  <div class="col-md-4 col-md-offset-4 container-fluid text-center" 
    id="weather-box">
    <h1>Weather</h1>
  </div> 
</div>
</body></html>

按当前位置划分的天气
身体{
背景色:#141b28;//紫色
}
#气象箱{
利润率最高:5%;
颜色:#C0C0;//银色
}
//var位置=[1,2];
函数getLocation(){
}
天气

上面的代码运行得很好,但是当我取消注释
//var location=[1,2]时
并重新加载文档时,本地URL从
~/weatherApp/index.html
更改为
~/weatherApp/1,2
,加载失败。[1,2]只是测试的占位符。有人能告诉我为什么会发生这种情况吗?很明显,它正在抓取数组的内容,但我不确定它为什么会替换URL?据我所知,我所有的标签、括号和括号都是正确的。这是在Chrome和Firefox中发生的,所以一定是我自己的作品。如果你们能提供任何帮助,我们将不胜感激。

我们的
位置是全球的

您将获得为其赋值的预期行为


解决这个问题的快捷方法是使用不同的变量名


更好的解决方案可避免以下问题:

  • 你以前从未听说过的环球
  • 未来引入的新浏览器默认全局设置
  • 来自加载到页面上的第三方脚本(包括由浏览器扩展加载的脚本)的全局文件
…首先要避免使用全局变量

将代码包装在IIFE中,使变量在本地范围内:

(function () {
    var location = [1,2];
    function getLocation(){
    }
})();

这显然会阻止您以全局变量的形式访问变量,但除了一些模糊的边缘情况外,您不需要这样做。您应该使用
addEventListener
而不是内部事件属性(如
onclick
)绑定事件处理程序函数,这样您就不需要事件处理程序函数是全局的。

全局的
位置是全局的

您将获得为其赋值的预期行为


解决这个问题的快捷方法是使用不同的变量名


更好的解决方案可避免以下问题:

  • 你以前从未听说过的环球
  • 未来引入的新浏览器默认全局设置
  • 来自加载到页面上的第三方脚本(包括由浏览器扩展加载的脚本)的全局文件
…首先要避免使用全局变量

将代码包装在IIFE中,使变量在本地范围内:

(function () {
    var location = [1,2];
    function getLocation(){
    }
})();

这显然会阻止您以全局变量的形式访问变量,但除了一些模糊的边缘情况外,您不需要这样做。您应该使用
addEventListener
而不是内在的事件属性(如
onclick
)绑定事件处理程序函数,这样您就不需要全局事件处理程序函数。

location
是保留的,下面是javascript保留字@NewToJS的列表-它是预定义的,而不是保留的。避开学校。“这常常是错误的。”昆汀说得很对。我以后会记住这一点:)谢谢。
location
是保留的,下面是javascript保留字@NewToJS的列表-它是预定义的,不是保留的。避开学校。“这常常是错误的。”昆汀说得很对。我以后会记住这一点:)谢谢。这正是我需要的,谢谢。我现在正在阅读有关事件侦听器的内容,我需要做的每件事都应该是这样。这正是我所需要的,谢谢。我现在正在阅读有关事件侦听器的内容,我需要做的每件事都应该是这样。