<body>
<button>Click1</button>
<button>Click2</button>
<button>Click3</button>
<button>Click4</button>
<button>Click5</button>
</body>
<!--ES5中的var是没有块级作用域的
ES6中的let是由块级作用域的(if/for)
-->
<script type="text/javascript">
//下面的闭包代码相当于上面这个,定义一个函数,然后立即传参数执行函数
/*
function a(name){
console.log(name)
}
a('小红')
*/
const btns = document.getElementsByTagName('button')
for (var i = 0; i < btns.length; i++) {
(function (num){
btns[i].addEventListener('click', function () {
console.log('第' + num + '个按钮被点击')
})
})(i)
//当for遍历到i等于5时,被 i < btns.length 判断挡住了
//如果不闭包处理,for循环在点击按钮之前先遍历一遍,最后i等于5,所以点击所有的按钮,都是输出‘第5个按钮被点击’
}
</script>