错误写法:
var i, a
for (i = 0; i< 10; i++) {
a = document.createElement('a');
a.innerHTML = i + "<br>";
a.addEventListener("click", function(e) {
e.preventDefault();
alert(i);
})
document.body.appendChild(a)
}
正确的两种写法
// 使用 ES6 的 let 实现块级作用域
var a
for (let i = 0; i< 10; i++) {
a = document.createElement('a');
a.innerHTML = i + "<br>";
a.addEventListener("click", function(e) {
e.preventDefault();
alert(i);
})
document.body.appendChild(a)
}
// 使用函数作用域
var i, a
for (i = 0; i< 10; i++) {
(function (i) {
// 函数作用域
a = document.createElement('a');
a.innerHTML = i + "<br>";
a.addEventListener("click", function(e) {
e.preventDefault();
alert(i);
})
document.body.appendChild(a)
})(i)
}