闭包1
在一个函数里面嵌套另一个函数
1 function func() { 2 var a=1, b=2; 3 function closure() { 4 return a + b; 5 } 6 return closure; 7 }
console.log(func()); 返回那个函数
console.log(func()()); 返回那个函数的执行结果
1 1、在外面操作闭包内部的变量 2 2、可以形成封闭空间,防止全局变量污染 3 3、可以延长闭包内部变量的生命周期
1 <script type="text/html"> 2 function makeSub(x) { 3 return function (y) { 4 return x - y; 5 } 6 } 7 8 var sub3 = makeSub(3); 9 var sub7 = makeSub(7); 10 11 console.log(sub3(2)); // 1 12 console.log(sub7(2)); // 5 13 14 // 释放对闭包的引用 15 sub3 = null; 16 sub7 = null; 17 </script>
对应第二条
<script> var singleton = (function () { // 私有变量 var intro = "喜欢IT, 就来撩课!"; var work = function () { console.log('小撩!!!!!'); }; return { name: '小撩', getIntro: function () { return intro; }, getWork: function () { return work; } } })(); console.log(singleton.name); //可以访问到 console.log(singleton.getIntro());//访问私有变量 singleton.getWork()();//访问私有变量 </script>