![](/img/trans.png)
[英]The for loop works on declaring the variable inside it but not in the global scope
[英]variable created with “let” in global scope vs variable created with “var” inside a loop
我试图获得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(ⅰ); 出现此错误:未捕获的SyntaxError:标识符'i'已被声明
但这个没有问题,给出以下输出:
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
在全局范围内的任何块内使用var
声明的变量不是该块的本地变量(在您的情况下是其for
循环块),但它们位于全局范围内。
因此,在您的第一个示例中,您尝试使用let
重新声明已在全局范围内声明的变量i
。
for(var i =0;i<5;i++){} console.log(i); //i is in global scope
凡为let
如果你的情况下宣布任何阻止其限定的for循环块。 它不在外面。
for(let i =0;i<5;i++){} console.log(i); //i is in global scope
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.