Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 循环中的变量范围_Javascript - Fatal编程技术网

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);