Javascript “为什么会?”;var";用以代替;“让我来吧?”;?

Javascript “为什么会?”;var";用以代替;“让我来吧?”;?,javascript,Javascript,大多数程序员都说应该始终使用“let”,所以问题来了:有什么理由仍然使用var还是完全使用var 如果变量仅在当前范围内使用,或者不应在当前范围外共享,例如如果在其他地方使用了相同的名称,但在重用之前不应设置,则应使用“已弃用”let。它对于大量分配变量非常有用,可以使代码更可读,更易于在范围内编写 例如,您可能想要编写 for (let city of cities) { console.log(city.name + city.state + city.areacode); } 但

大多数程序员都说应该始终使用“let”,所以问题来了:有什么理由仍然使用var还是完全使用var 如果变量仅在当前范围内使用,或者不应在当前范围外共享,例如如果在其他地方使用了相同的名称,但在重用之前不应设置,则应使用“已弃用”

let。它对于大量分配变量非常有用,可以使代码更可读,更易于在范围内编写

例如,您可能想要编写

for (let city of cities) {
    console.log(city.name + city.state + city.areacode);
}
但是你可能不想每次都写城市。,因为虽然这个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);
这将显示两个名字,但姓氏显示两次


constvar类似,但一旦分配,就无法更改

你可以用提升做一些可爱的把戏,但一般来说,永远不要使用
var
,除非你确切知道为什么要使用它。我会说相反。通常使用
var
,因为它不会破坏兼容性。如果你知道你在做什么,那么使用let。可能是一种情况。我想补充如下:作为一般规则,如果您确切知道自己在做什么,请仅使用
var
let
),let变量通常在使用有限的变量时使用。例如,在等待时间内可以修改未同步的数据。如果您使用let,它可以锁定您的数据。这对你有好处。通过
const
let
☺我从来没有说过它不是。您使用var的示例正好相反:如果您希望p位于外部作用域中,则必须在外部作用域中声明它。如果您不这样做,您正在为自己或代码用户准备即将出现的问题。。。这正是人们对JavaScript的指责。禁止使用var(使用新代码)是解决方案。