关于js闭包的详解及代码实例
程序员文章站
2022-03-16 15:22:15
1.封装性
2.可以访问函数内部的变量
3.函数带()才是执行函数,匿名函数是执行函数
var a = b(); //匿名函数
var c = (function(){})...
1.封装性
2.可以访问函数内部的变量
3.函数带()才是执行函数,匿名函数是执行函数
var a = b(); //匿名函数
var c = (function(){})(i) //匿名函数 括号里面的i是参数
4.闭包就是一个函数引用另外一个函数的变量,因此变量被引用着所以不会被回收,因此可以用来封装一个私有变量。
5.闭包就是未被销毁的局部变量
6.把匿名函数的执行结果保存在内存中,因此第二次就直接进入return function()里面
7.闭包的优点和缺点
优点:可以读取函数内部的变量;可以让这些变量的值存在内存中
缺点:不必要的闭包只会徒增内存,不能滥用闭包
8.闭包的应用场景:保护函数内的变量安全
①.使用闭包代替全局变量
②.函数外或在其他函数中访问某一函数内部的参数
③.在函数执行之前为要执行的函数提供具体参数
④.在函数执行之前为函数提供只有在函数执行或引用时才能知道的具体参数
⑤.为节点循环绑定click事件,在事件函数中使用当次循环的值或节点,而不是最后一次循环的值或节点
⑥.暂停执行
⑦.包装相关功能
9.代码
function a(){ var i = 0; console.log(i+"xxx") function b(){ console.log(++i); } return b; } var c = a(); //当函数a的内部函数b被函数a外的一个变量引用的时候,就创建了闭包 c(); //1 c(); //2
var cnt = (function(){ var i = 0; console.log(i+"wwww"); return function(){ console.log(i++); } })(); cnt(); //0 cnt(); //1