JavaScript变量是在循环内部还是循环内部声明?

ECMA / Java语言可将任何用var声明的变量提升到函数顶部的任何位置。这是因为该语言确实具有功能范围,并且不像许多其他类似C的语言那样具有块范围。

function() {
   for(var a = 0; a < 7; a ++) {
      var b = 100;
   }
}

是相同的

function() {
   var b;
   for(var a = 0; a < 7; a ++) {
      b = 100;
   }
}

但是,放任不管,事实并非如此。let具有词法作用域。因此,除非您需要在循环外使用相同的变量(或者如果每次迭代都取决于上一次迭代中对该变量执行的操作),那么最好声明使用它的范围。