//利用闭包,()()立即执行/函数内部访问外部变量
let a
for(let i=0;i<10;i++){
a=document.createElement('a')
a.innerHTML=i+'<br>';
(function (e){
a.addEventListener('click',function(){
e.preventDefault()
alert(i)
console.log(e)
})
})(i);//立即执行匿名函数,传递下标i(实参)
document.body.appendChild(a)
}
//或者
let a
for(let i=0;i<10;i++){
a=document.createElement('a')
a.innerHTML=i+'<br>';
a.addEventListener('click',(function (e){
return function () {
e.preventDefault()
alert(i)
console.log(e)
}
})(i));
document.body.appendChild(a)
}
//或者
let 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)
}
前端面试必问题型:闭包实现10个‘a’标签循环点击
于 2022-06-21 18:00:13 首次发布