JavaScript For循环,闭包导致JSLint警告

JavaScript For循环,闭包导致JSLint警告,javascript,function,for-loop,jslint,jshint,Javascript,Function,For Loop,Jslint,Jshint,我正在编写一个JavaScript脚本,它使用for循环将onclick事件分配给一系列按钮。为了解决i范围内的问题,我使用以下示例作为for循环的基础,基于。我希望我知道这种创建for循环的方法的名称,如果有的话 for (var i = 0; i < 10; i++) (function(i){ //some code })(i); for(var i=0;i

我正在编写一个JavaScript脚本,它使用for循环将
onclick
事件分配给一系列按钮。为了解决
i
范围内的问题,我使用以下示例作为for循环的基础,基于。我希望我知道这种创建for循环的方法的名称,如果有的话

for (var i = 0; i < 10; i++) (function(i){
    //some code
})(i);
for(var i=0;i<10;i++)(函数(i){
//一些代码
})(i) );
当我通过JSLint和JSHint运行我的代码时,它会给出一条警告:“不要在循环中生成函数。”这是指上面构建的两个for循环。我看到的有关此警告的问题没有使用我正在使用的格式的循环,因此我不知道它们如何应用于此


为什么会给出这样的警告,还有比这更好的方法吗?另外,这个for循环格式有名字吗(最后一部分可以在注释中回答)?如果这与其他问题有关,为什么该格式有效?

这只是创建了一个
闭包
,并且
立即调用函数表达式

onclick
事件将在将来某个时候发生,但到那时循环已经完成了它的执行,
i
的值将更新为
i的最后一个值,这只是创建一个
闭包
并立即调用函数表达式

onclick
事件将在将来某个时间发生,但到那时循环已完成执行,
i
的值将更新为
ii的最后一个值,如果我能找出该for循环格式的名称,我也许能更好地表达问题标题a。如果我能找出这个for循环格式的名称,我也许能更好地表达问题标题a。
for (let i = 0; i < 10; i++){
  // rest of the code
}