一个学习案例中遇到的问题 index.html index.css .box { width: 100px; height: 50px; border: 1px solid; } index.js var boxs = document.getElementsByClassName('box'); for (var i = 0; i 因为之前写代码在 onclick 事件里基本都是用 this, 或者用 let 来代替 var 来定义变量, 所以绕过了这个坑 > 但现在遇到了这样的 bug, 还是想问下导致这个问题的原因是什么? ### 补充 关于 var 的特性, 我能想到的是 全局污染和变量提升, 简单地说 * 全局污染: for 中定义 var, 作用域会提升到全局 * 变量提升: 允许先调用后定义 但是上述两个特性都不能合理的解释 -> `为什么在for循环中定义的onclick, 循环变量i在onclick事件中永远是for最终执行后的i?`