原因:js是在es6之前是没有块作用域的,只有函数作用域。
<script>
//写法1
var i = 0;
for (i = 1; i <= 10; i++) {
(function(i) {
var btn = document.createElement('button');
btn.innerText = i;
btn.onclick = function () {
alert(i)
}
document.body.appendChild(btn);
})(i)
}
//写法2
for (let i = 1; i <= 10; i++) {
var btn = document.createElement('button');
btn.innerText = i;
btn.onclick = function () {
alert(i)
}
document.body.appendChild(btn);
}
</script>