以编程方式将单个事件侦听器添加到多个 div 会导致相同的函数出现在所有受影响的 div 上

Programmatically adding individual event listeners to multiple divs results in the same function appearing on all affected divs

for (i = 0;i < cnt;i++) {
    var thumb=thumbnails[i];
    var id=thumb.id;
    thumb.addEventListener('click', function () {
        location.href="SomeWebPage.html?id=" + id;
    }, false);
}

上面的代码导致所有缩略图具有相同的最后 id 分配,而不是基于个人 div id 的个人缩略图 id 分配。我的期望是每个缩略图 div 都将分配一个事件处理程序,该事件处理程序在正在定义的 location.href url 中引用其特定的 id。相反,所有事件处理程序都具有相同的 url,仅引用最后一个 dev id.

使用let代替var

let id=thumb.id;

var 是全局的东西,这就是为什么只有最后一个值保留在箭头函数内存中的原因