gpt4 book ai didi

javascript - 为什么在 javascript 中退出循环后 for 循环计数器没有被销毁?

转载 作者:数据小太阳 更新时间:2023-10-29 04:30:07 25 4
gpt4 key购买 nike

for(var i=0;i<5;i++){}
alert(i);

在 javascript 中,这将使我们得到 5其他语言,如 C++、java、c# .... 只会给出一个错误,即 i 变量未在上下文中定义。

那么为什么在 javascript 中 for 循环计数器在退出循环后没有被销毁?

最佳答案

这是因为 JavaScript 引擎会将变量声明移动(“提升”)到函数的顶部,无论它在函数内的何处声明1。 JavaScript 没有 block 作用域。

{
//Some code
for(var i=0;i<5;i++){}
alert(i);
//Some code
}

相当于:

{
var i;
//.. some code
for(i=0;i<5;i++){}
alert(i);
}

1 除非异常被 catch 捕获条款;该变量的范围为 catch阻止。

更新

用于定义 block 作用域变量 ecmascript 6 specs (javascript 1.7) 引入了 let 。目前这仅适用于最新版本的 FireFox 浏览器并处于共识阶段。

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

Fiddle

关于javascript - 为什么在 javascript 中退出循环后 for 循环计数器没有被销毁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17475420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com