为什么for循环计数器不';退出javascript中的循环后不会被破坏? for(var i=0;i
这是因为JavaScript引擎会将变量deparation移动(“提升”)到函数的顶部,无论它在函数1中的哪个位置声明。JavaScript没有块作用域为什么for循环计数器不';退出javascript中的循环后不会被破坏? for(var i=0;i,javascript,Javascript,这是因为JavaScript引擎会将变量deparation移动(“提升”)到函数的顶部,无论它在函数1中的哪个位置声明。JavaScript没有块作用域 for(var i=0;i<5;i++){} alert(i); Javascript中的变量受到var提升的约束,其中该变量由Javascript引擎在块上方声明 有关如何工作的示例,请参见。Javascript仅为函数创建作用域,使用和捕获块(函数为var语句创建作用域), 因此,与Java()等价的是: <script t
for(var i=0;i<5;i++){}
alert(i);
Javascript中的变量受到
var提升
的约束,其中该变量由Javascript引擎在块上方声明
有关如何工作的示例,请参见。Javascript仅为函数创建作用域,
使用
和捕获
块(函数为var
语句创建作用域),
因此,与Java()等价的是:
<script type="application/javascript;version=1.7">
//Some code
for (let i = 0; i < 10; i++) {
alert(i); // 1, 2, 3, 4 ... 9
}
alert(i); // Here you will get an error here saying ReferenceError: i is not defined.
}
</script>
(函数(){
对于(var i=0;i可能重复您需要知道的所有内容,谢谢,这些链接真的很有帮助。请阅读:否,它还为catch
子句创建作用域。@torazaburo true,容易忘记:)@torazaburo它为包含catch异常(在catch子句中定义)的变量创建作用域,但它并没有为catch块中定义的变量创建一个通用范围,对吗?()我相信这个答案是错误的..你是对的,catch子句中定义的变量和其他变量一样被提升到函数的顶部,它是在它自己的小上下文中捕获的变量。抱歉,有任何混淆。我应该说否,它还为catch
子句中捕获的变量创建一个作用域。“@user1525337不客气。也许你读过这篇关于scopes的文章-+好吧,这就是JavaScript没有block语句作用域的原因;
现在明白了,我没有先读你的答案,但它是非常有用的答案。也许你应该修改你的第一句话,因为它让你觉得如果不是为了提升的话,这会起作用。
{
var i;
//.. some code
for(i=0;i<5;i++){}
alert(i);
}
<script type="application/javascript;version=1.7">
//Some code
for (let i = 0; i < 10; i++) {
alert(i); // 1, 2, 3, 4 ... 9
}
alert(i); // Here you will get an error here saying ReferenceError: i is not defined.
}
</script>
(function(){
for(var i=0;i<5;i++){}
})();
alert(i);