为什么在Javascript for循环中包含变量声明?

为什么在Javascript for循环中包含变量声明?,javascript,for-loop,Javascript,For Loop,在Jon Duckett的“Javascript和Jquery”中,他经常使用下面这样的for循环。他解释说,这个变量实际上构建为循环中找到的数量。我不明白的是,如果每次运行时都设置变量=0,它怎么能累积更高的数字?此外,为什么要在循环中使用它,而不是在循环外指定它,以便它可以累积到更高的数字,而不是每次都重置为0 if (hotItems.length > 0) { for (var i=0; i<hotItems.length; i++) { hotIte

在Jon Duckett的“Javascript和Jquery”中,他经常使用下面这样的for循环。他解释说,这个变量实际上构建为循环中找到的数量。我不明白的是,如果每次运行时都设置
变量=0
,它怎么能累积更高的数字?此外,为什么要在循环中使用它,而不是在循环外指定它,以便它可以累积到更高的数字,而不是每次都重置为0

if (hotItems.length > 0) {
    for (var i=0; i<hotItems.length; i++) {
        hotItems[i].className = 'cool';
    }
}
if(hotItems.length>0){

for(var i=0;ifor
循环的整个概念有点像
while
循环的捷径。你在精神上分析这个错误的方式。使用
while
循环,这将是:

var i=0;
while (i<hotItems.length) {
hotItems[i].className = 'cool';
i++;
}
var i=0;

虽然(除了避免将其置于全局范围之外,这是一个很好的理由,问题是如果它不在代码出现的任何函数的顶部,则会提升变量,这有时会导致意外的结果。顺便说一句,您不是每次都设置它;这是在循环开始执行之前发生的初始化。除了Dave Newt之外on和scimonester..有一个很好的理由不在外部定义它。如果您在其他地方使用它,您可能会忘记重置i。因此,如果您没有很好的理由,变量'i=0;'甚至'i=0;'肯定不是'i;'。谢谢Dave/Alex肯定也很有帮助!只是为了让我正确理解,初始状态M非条件的ent将始终只运行一次,尽管在重复调用条件后会运行一次?感谢您的闪电般响应,帮助我获得javascript启示!