闭包:将函数内使用的其它作用域的变量做一个副本(下面称为锁定)
1.函数是不是值得来锁定一个变量,是看该变量在调用这个函数的时候,是不是能在上下文作用域中找到这个变量,如果无法在调用时找到这个变量,内部函数就会锁住它,否则就不会锁住
2. 函数激活时才会锁定变量(满足条件1),激活的方式:call即funName();()()分组;return function....;
<script> var dofun = []; function b(){ for (var i = 0; i < 4; i++) { dofun[i] = function(k){ //使用return激活函数 return function(){ return k; } }(i); //function(k)(i);k=i } } b(); function a(){ alert('3='+dofun[3]()); //3 alert("0="+dofun[0]()); //0 } a(); </script>