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具有词法作用域。因此,除非您需要在循环外使用相同的变量(或者如果每次迭代都取决于上一次迭代中对该变量执行的操作),那么最好声明使用它的范围。