一.js闭包
闭包定义:当内部函数被保存到外面的时候,就会形成闭包
缺点:闭包会导致原有的作用域链不释放,造成内存的泄漏
(在函数执行前的一瞬间会生成自己的AO,这就是函数执行了2次,生成了两次AO,这两次AO是没有任何关联的
)
优点:(1).实现共有变量
(2).做缓存
(3).实现封装让属性私有化
(4).模块化开发,防止污染全局变量
闭包实例:
html:
<ul> <li>0</li> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> <li>6</li> <li>7</li> <li>8</li> <li>9</li> </ul>
js:
<script> var lis = document.getElementsByTagName("li"); for(var i = 0;i < lis.length;i++){ // console.log(lis[i]); // lis[i].onclick = function(){ // console.log(i);//bibao // } (function(i){ lis[i].onclick = function(){ console.log(i); } })(i)//匿名函数 } /*GO = { lis : object i : 10 } ni.ao = { i : 0 } click.ao = { }*/
</script>
原文:https://www.cnblogs.com/lyx1014/p/11012744.html