在为HTML元素添加监听的时候,我们为其绑定一个外部的函数,但是却容易犯错这样写监听:

item.addEventListener("tap", doSomething(index));
function doSomething(index) {
    alert(index) //(这样写是错的)
}

这样做,你会发现函数在初始化页面就被调用了,而且点击事件无法调用函数。
这是由于addEventListener第二个参数接收的是function/函数,直接写函数名传参是无法识别为函数的,要传参就需要用闭包return一个function

正确写法如下:

item.addEventListener("tap", doSomething(index));
function doSomething(index) {
    return function(){
        alert(index)
    }
}