【问题标题】:Why would "var" be used instead of "let"? [duplicate]为什么要使用“var”而不是“let”? [复制]
【发布时间】:2019-01-20 18:41:44
【问题描述】:

大多数程序员都说应该始终使用“let”,所以问题来了:是否有任何理由仍然使用 var 或者它只是完全 “弃用”?

【问题讨论】:

  • 你可以用提升做一些可爱的技巧,但作为一般规则,除非你确切地知道你为什么使用它,否则不要使用var
  • 我会说相反的。作为一般规则使用var,因为它不会破坏兼容性。如果您知道自己在做什么,请使用 let。
  • 我会添加以下内容:作为一般规则,如果您确切知道自己在做什么,请仅使用 varlet =)
  • let 变量通常在有限使用这些变量时使用。例如,可以在等待期间修改未同步的数据。如果您使用 let 它可能会锁定您的数据。这对你有好处。 Difference between let and var in Javascript

标签: javascript


【解决方案1】:

let 如果变量仅在当前范围内使用,则应使用,或者不应在当前范围之外共享,例如在其他地方使用相同的名称但不应在重用前设置。它对于大量分配变量很有用,可以使您的代码在作用域内更具可读性和更容易编写。

例如你可能想写

for (let city of cities) {
    console.log(city.name + city.state + city.areacode);
}

但您可能不想每次都写 city. - 因为虽然这个 for 循环现在并没有做太多 - 将来您想要一个更多!所以在这种情况下你会这样做:

for (let city of cities) {
    let cname = city.name;
    let cstate = city.state;
    let carea = city.areacode;
    console.log(cname + cstate + carea);
}

这使您可以更好地将数据与逻辑分开...而不必担心在其他地方设置 cname。

就变量的范围而言:

people = ["Frank", "Tina"];
for (let p of people) {
    console.log(p);
} 
console.log(p);

这会在显示前两个名称之后引发未分配变量错误。

var 如果您想分配一个所有人都可以看到的变量范围,则非常有用。比如说,分配一个 url 来检索 json 数据,然后动态更改该 url 是很有用的……所以你所有的其他函数总是访问相同的数据,而不是每次都调用一个函数来获取它。如果您可能想通过几个不同的功能跟踪元素、对象等,它们会很有用。

people = ["Frank", "Tina"];
for (var p of people) {
    console.log(p);
} 
console.log(p);

这将显示两个名字,但两次显示姓氏。

const 类似于 var,但一旦分配就不能更改。

【讨论】:

  • 使用constlet 可以批量分配变量 ☺
  • 我从没说过不是。
  • 您的示例与 var 完全相反:如果您希望 p 在外部范围内,则必须在外部范围内声明它.如果您不这样做,那么您自己或您的代码用户正在为即将出现的问题做好准备……这正是人们对 JavaScript 的指责。禁止使用 var(带有新代码)是解决方案。
猜你喜欢
  • 2020-01-16
  • 1970-01-01
  • 2018-01-06
  • 2015-12-30
  • 2017-04-23
  • 2012-05-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多