【问题标题】:Identifier location has already been declared标识符位置已被声明
【发布时间】:2019-04-17 08:12:14
【问题描述】:

大家好,我是 JavaScript 的初学者,遇到的问题是标识符位置已经被声明,但是如果我将位置变量重命名为 locationnn,那么它会按预期工作。这是我使用的代码:

let city ='New York';
let country = 'USA';
let location = city +","+country;

console.log(location);

【问题讨论】:

  • 您是否在控制台上以交互方式执行此操作?也许您之前确实声明过location...?
  • @deceze,感谢您的 cmets,位置是否可能是已在全局范围内声明的关键字?
  • 是的,它是全局对象的一个​​属性。现在尝试一下,看起来这就是你不能在全球范围内重新声明它的原因。直到现在我才真正意识到这一点。
  • @RobinZigmond 您介意将其写为具有一定背景的实际答案吗?会很好,因为 cmets 很容易被监督。
  • 如果您检查了 javascript 中的保留字,您就会找到原因。例如。 javascripter.net/faq/reserved.htm

标签: javascript


【解决方案1】:

您不能用let 重新声明已在同一范围内声明的变量。 (来源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let#Redeclarations)请注意,这适用于 var - 声明被简单地忽略(但任何与它一起完成的赋值仍然有效)。

location 已经作为全局变量存在于浏览器中,并保存了一个包含有关当前 URL 信息的对象。 (它最常被称为window.location,如该 MDN 页面顶部所示 - 但window 是 JS 中具有特权的“全局对象”,其所有属性与同名的全局变量相同.)

所以你不能用let 声明一个全局的location 变量。它var 一起工作,但不是您认为的方式 - 将字符串分配给全局location 变量会重定向页面(假设字符串是 URL,如果不是你只会得到一个404)。所以简短的回答是你不应该使用location 作为变量名,而应该选择其他名称。

【讨论】:

    【解决方案2】:

    如果您在浏览器控制台中尝试,location 是一个全局对象,contains the information about the current URL。 Hense 当你用let location 重新声明它时,它会给出'标识符'位置'已经被声明'的错误

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-28
      • 2021-03-28
      相关资源
      最近更新 更多