Javascript 循环中的变量范围
我有点困惑Javascript 循环中的变量范围,javascript,Javascript,我有点困惑 { 用于(变量计数器=1;计数器
{
用于(变量计数器=1;计数器<6;计数器++){
}
}
控制台日志(计数器);
如果循环中的变量在创建循环的
范围内可用,那么为什么我可以访问更高一级的变量,因为我通过放括号创建了另一个范围?循环没有自己的范围
循环是块,块没有自己的作用域;使用var
创建的变量只能具有函数或全局范围
正如其他人所指出的,在ES6中,您将能够将块作用域变量与let
关键字一起使用。您错了,循环没有作用域。使用var
关键字创建的变量具有函数作用域(或全局作用域,如果它们在函数外部声明)
ES6为块作用域变量引入了let
关键字。我知道,作用域与创建变量的作用域相同。也许我错了?是的,你错了。如果对(var counter=1…)执行,计数器将从此点开始在包含此循环的函数中可用(或全局可用,如果它不在函数中)。Javascript只知道对象范围和函数范围。没有块作用域。变量有函数级作用域,而不是块级……啊,现在我明白了。
{
for (var counter = 1; counter < 6; counter++) {
}
}
console.log(counter);