闭包实现10个‘a’标签循环点击
来源:6-6 作用域相关的面试题 - part2

linlins
2021-11-05
老师你好,我想问一下
//利用闭包,()()立即执行/函数内部访问外部变量
let a
for(let i=0;i<10;i++){
a=document.createElement(‘a’)
a.innerHTML=i+'<br>'
;
(function (e){
a.addEventListener(‘click’,function(){
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 () {
console.log(e)
}
})(i));
document.body.appendChild(a)
}
这俩种闭包都可以点击显示对应的i数值,这俩种闭包的有什么区别吗,第二种是属于把函数作为返回值的闭包类型,第一种好像既不属于函数作为参数也不属于作为返回值
写回答
1回答
-
一样的,这两种都是把 i 作为参数传递到一个函数的作用域中保存
022021-11-06
相似问题