闭包指调用另一个函数作用域内的变量一个函数
作用为扩展函数内部变量作用范围,也用于处理异步函数造成的数据不同步,如点击事件,定时器,ajax等
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <ul> <li>大佬救我</li> <li>大佬救我</li> <li>大佬救我</li> <li>大佬救我</li> <li>大佬救我</li> </ul> <script type="text/javascript"> var lis = document.getElementsByTagName('li'); // 打印序列号 for (var i = 0; i < lis.length; i++) { lis[i].onclick = function() { lis[i].index = i; console.log(this.index); // console.log(i);直接打印不行,for立即执行到i=4,onclick事件不会立即触发,需点击 } } // 采用闭包后可直接打印i为序列号 for (var i = 0; i < lis.length; i++) { (function(i) { lis[i].onclick = function() { console.log(i); } })(i) } </script> </body> </html>