下面我来说一个闭包的使用场景吧。
没有使用闭包的版本
- window.onload = function(){
- var ul = document.getElementsByTagName("ul")[0];
- var li = ul.getElementsByTagName("li");
- for(var i=0;i<li.length;i++){
- li[i].onclick = function(){
- console.log(i); //不管我怎么点都是返回6
- }
- }
- }
使用了闭包的版本
- window.onload = function(){
- var ul = document.getElementsByTagName("ul")[0];
- var li = ul.getElementsByTagName("li");
- for(var i=0;i<li.length;i++){
- (function(i){
- li[i].onclick = function(){
- console.log(i); //点击第几个返回第几个
- }
- })(i)
- }
- }
评论区:
for(var i=0;i
(function(i){
li[i].onclick = function(){
console.log(i); // 点击第几个返回第几个
}
})(i)
}
是不是类似
for(var i=0;i
function aaa(i){
li[i].onclick = function(){
console.log(i); // 点击第几个返回第几个
}
}
aaa(i);
}
让 aaa(i) 里的参数获取 i 值然后传进去
来源: