我刚开始使用 JavaScript,并且遇到了变量操作混乱的问题。我读到
var
是不值得鼓励的,因为它允许意外的变化,所以 let
和 const
应该取代 var
。我一直在与一个产生错误结果的程序作斗争,我已将问题范围缩小到我对变量的使用。我已经确定,如果我使用 let
,代码会失败,但使用 var
则可以正常工作。我知道问题是由于 let 命令的范围造成的,但我想获得一些有关如何使这个简单示例与 let
而不是 var
一起工作的最佳实践的指导。
这是出现未定义错误的代码:
const yearBorn = 1970;
console.log(yearBorn);
if (yearBorn <= 2020) {
console.log("Less than");
let baseYearCalc = 2021;
console.log(baseYearCalc);
}
console.log(baseYearCalc);
输出为: 1970年 少于 2021年 baseYearCalc 未定义
请让我知道知道自己在做什么的人将如何解决这个问题。 谢谢,拉里
因此,当您使用
var
时,该变量就会被提升。本质上它在 if 块的范围之外可用。
if (yearBorn <= 2020) {
console.log("Less than");
let baseYearCalc = 2021; // making a variable here in this scope
console.log(baseYearCalc);
} // It goes out of scope here
console.log(baseYearCalc); // and when you try to access it here it errors.
let baseYearCalc = 2021;
if (yearBorn <= 2020) {
console.log("Less than");
console.log(baseYearCalc);
}
console.log(baseYearCalc); // Now it is available here as well