变量范围
问题描述:
{
for (var counter = 1; counter < 6; counter++) {
}
}
console.log(counter);
如果从循环变量创建for loop
范围是可用的,那么为什么我有机会获得更高的变量一个水平,我公司自创建放置这些括号是另一个范围?
答
变量有功能范围(或全球范围如果他们的功能之外声明)。
ES6引入了let
关键字块范围变量。
答
循环没有自己的作用域。
循环是一个块,块没有自己的作用域;使用var
创建的变量只能具有函数或全局范围。
正如其他人指出的那样,在ES6中,您将能够使用let
关键字的块范围变量。
+0
我知道,范围与创建范围相同。也许我错了? –
+0
是的,你错了。如果你使用'for(var counter = 1 ...)','counter'就可以从包含这个循环的函数的前面(或者全局的,如果它不在一个函数中)开始使用。 –
答
你错了,循环没有范围。与var
关键字创建
Javascript只知道对象范围和功能范围。没有块范围。 – Luaan
变量有函数级范围,不是块级...... –
啊,现在我明白了。 –