【发布时间】:2019-09-28 22:03:09
【问题描述】:
我正在尝试获得一些关于 JavaScript 中变量声明的经验。 在下面的代码中,每当我尝试使用 var 关键字在循环内定义变量时,都会引发错误:
“未捕获的 SyntaxError:标识符 'i' 已被声明”。
而如果我使用“let”关键字(或根本不使用关键字)就没有问题。 我知道在我不使用任何关键字的情况下,JavaScript 在全局范围内使用相同的变量并覆盖它。 我也知道使用“let”关键字创建的变量被认为是块范围,而在函数外部使用“var”关键字创建的变量被认为是全局的。但我不明白这种行为! 如果有人能对此事有所启发,我将不胜感激。
这段代码:
let i = 78;
console.log(i);
for (var i = 0; i < 4; i++) {
console.log(i);
var insideloop = 100;
}
console.log(i); 给出此错误:未捕获的 SyntaxError: Identifier 'i' has been declared
但是这个没有问题并给出以下输出:
let i = 78;
console.log(i);
for (let i = 0; i < 4; i++) {
console.log(i);
var insideloop = 100;
}
console.log(i);
结果: 78 0 1 2 3 78
【问题讨论】:
-
What's the difference between using "let" and "var"? 的可能重复项。这是因为范围。
标签: javascript variables